)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f2b0b2c4b6f188b6b03b4e2ec5cba866973913ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5435ff87_8f9ec367","updated":"2022-01-23 01:01:49.000000000","message":"lgtm","commit_id":"9277110b5080346827301b9cf5b728c4c8ce8704"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ecf79d4e80096c72c03991df62d08bb11cf21ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"128490f2_6e321e83","updated":"2022-03-22 13:42:10.000000000","message":"ok that look correct to me\n\none nit but not worth a respin.\n\nit might be worth considering adding a generic form dict constructor to ovo base so that we could avoid the explicit use of setattr but that is out of scope fo this.","commit_id":"9277110b5080346827301b9cf5b728c4c8ce8704"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3e9c7e1fc89c862033d3f98fac7e005505e77f9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9122bf78_4c1ae453","updated":"2022-03-23 11:00:35.000000000","message":"recheck","commit_id":"9277110b5080346827301b9cf5b728c4c8ce8704"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"17f9e573efe505cb01593aaab0506d7aaf6581b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1c363715_ea674585","updated":"2022-03-24 15:16:16.000000000","message":"recheck","commit_id":"028b3bca16c750f6c7edf1b389ed6c79a2c9843d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91a02134750fe6fe254c18c98600de87b50cf13e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c8b11bf3_07404f57","updated":"2022-03-24 20:10:09.000000000","message":"recheck","commit_id":"028b3bca16c750f6c7edf1b389ed6c79a2c9843d"}],"nova/objects/migration.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ecf79d4e80096c72c03991df62d08bb11cf21ea","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def determine_migration_type(migration):"},{"line_number":28,"context_line":"    if isinstance(migration, dict):"},{"line_number":29,"context_line":"        old_instance_type_id \u003d migration[\u0027old_instance_type_id\u0027]"},{"line_number":30,"context_line":"        new_instance_type_id \u003d migration[\u0027new_instance_type_id\u0027]"},{"line_number":31,"context_line":"    else:"},{"line_number":32,"context_line":"        old_instance_type_id \u003d migration.old_instance_type_id"},{"line_number":33,"context_line":"        new_instance_type_id \u003d migration.new_instance_type_id"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    if old_instance_type_id !\u003d new_instance_type_id:"},{"line_number":36,"context_line":"        return \u0027resize\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"6b669132_4946e85a","line":33,"range":{"start_line":28,"start_character":3,"end_line":33,"end_character":61},"updated":"2022-03-22 13:42:10.000000000","message":"ack so there are still some places where we dont have the object i guess.\n\nit would be nice to add a todo to capture converting this code path to always use objects in the future but i don\u0027t think that is enough to respin this so treat this as a nit.","commit_id":"9277110b5080346827301b9cf5b728c4c8ce8704"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5ecf79d4e80096c72c03991df62d08bb11cf21ea","unresolved":true,"context_lines":[{"line_number":87,"context_line":"                value \u003d determine_migration_type(db_migration)"},{"line_number":88,"context_line":"            elif key \u003d\u003d \u0027uuid\u0027 and value is None:"},{"line_number":89,"context_line":"                continue"},{"line_number":90,"context_line":"            setattr(migration, key, value)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        migration._context \u003d context"},{"line_number":93,"context_line":"        migration.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aadf1dc_f86d6a8a","line":90,"range":{"start_line":90,"start_character":12,"end_line":90,"end_character":19},"updated":"2022-03-22 13:42:10.000000000","message":"while using setattr is often an anti pattern in this case it make sense.","commit_id":"9277110b5080346827301b9cf5b728c4c8ce8704"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"86a1b80ad5f152608d95f0cfa739b485c602f7b8","unresolved":false,"context_lines":[{"line_number":6409,"context_line":"        mock_pre.assert_called_once_with(c, instance, False, None,"},{"line_number":6410,"context_line":"                                         dest, migrate_data)"},{"line_number":6411,"context_line":"        mock_migrate.assert_called_once_with(c, instance,"},{"line_number":6412,"context_line":"                                             {\u0027source_compute\u0027: instance["},{"line_number":6413,"context_line":"                                              \u0027host\u0027], \u0027dest_compute\u0027: dest})"},{"line_number":6414,"context_line":"        mock_post.assert_called_once_with(c, instance, False, dest)"},{"line_number":6415,"context_line":"        mock_clear.assert_called_once_with(mock.ANY)"},{"line_number":6416,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_6912d1b3","line":6413,"range":{"start_line":6412,"start_character":45,"end_line":6413,"end_character":76},"updated":"2020-05-09 05:52:38.000000000","message":"It should be replaced with a Migration object.","commit_id":"769360f3b384bcaf83f03f49de2e53c1bedc02fb"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"86a1b80ad5f152608d95f0cfa739b485c602f7b8","unresolved":false,"context_lines":[{"line_number":6495,"context_line":"        migration_obj \u003d objects.Migration(uuid\u003duuids.migration,"},{"line_number":6496,"context_line":"                                          source_node\u003dinstance.node,"},{"line_number":6497,"context_line":"                                          status\u003d\u0027completed\u0027)"},{"line_number":6498,"context_line":"        migration \u003d {\u0027source_compute\u0027: srchost, \u0027dest_compute\u0027: dest, }"},{"line_number":6499,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData("},{"line_number":6500,"context_line":"            is_shared_instance_path\u003dFalse,"},{"line_number":6501,"context_line":"            is_shared_block_storage\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_c9267d17","line":6498,"range":{"start_line":6498,"start_character":20,"end_line":6498,"end_character":71},"updated":"2020-05-09 05:52:38.000000000","message":"ditto","commit_id":"769360f3b384bcaf83f03f49de2e53c1bedc02fb"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"86a1b80ad5f152608d95f0cfa739b485c602f7b8","unresolved":false,"context_lines":[{"line_number":6582,"context_line":"                                        \u0027root_device_name\u0027: None,"},{"line_number":6583,"context_line":"                                        \u0027block_device_mapping\u0027: []},"},{"line_number":6584,"context_line":"                                        migrate_data)])"},{"line_number":6585,"context_line":"            migration \u003d {\u0027source_compute\u0027: srchost,"},{"line_number":6586,"context_line":"                         \u0027dest_compute\u0027: dest, }"},{"line_number":6587,"context_line":"            migrate_instance_start.assert_has_calls(["},{"line_number":6588,"context_line":"                mock.call(c, instance, migration)])"},{"line_number":6589,"context_line":"            post_live_migration_at_destination.assert_has_calls(["}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_890da592","line":6586,"range":{"start_line":6585,"start_character":0,"end_line":6586,"end_character":48},"updated":"2020-05-09 05:52:38.000000000","message":"ditto","commit_id":"769360f3b384bcaf83f03f49de2e53c1bedc02fb"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f6bafb1d3adc30a50f8f4490345ec086c4bfda77","unresolved":false,"context_lines":[{"line_number":6582,"context_line":"            migration \u003d {\u0027source_compute\u0027: srchost,"},{"line_number":6583,"context_line":"                         \u0027dest_compute\u0027: dest, }"},{"line_number":6584,"context_line":"            migrate_instance_start.assert_has_calls(["},{"line_number":6585,"context_line":"                mock.call(c, instance, migration)])"},{"line_number":6586,"context_line":"            post_live_migration_at_destination.assert_has_calls(["},{"line_number":6587,"context_line":"                mock.call(c, instance, False, dest)])"},{"line_number":6588,"context_line":"            post_live_migration_at_source.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_c1a34d9d","line":6585,"range":{"start_line":6585,"start_character":39,"end_line":6585,"end_character":48},"updated":"2020-05-18 17:36:12.000000000","message":"It should be fixed.","commit_id":"0a083e5eb127a479c1f5eee3db5bc9013d469eed"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"70d72fc23590a1ec305365b144db8099ef68a195","unresolved":false,"context_lines":[{"line_number":6582,"context_line":"            migration \u003d {\u0027source_compute\u0027: srchost,"},{"line_number":6583,"context_line":"                         \u0027dest_compute\u0027: dest, }"},{"line_number":6584,"context_line":"            migrate_instance_start.assert_has_calls(["},{"line_number":6585,"context_line":"                mock.call(c, instance, migration)])"},{"line_number":6586,"context_line":"            post_live_migration_at_destination.assert_has_calls(["},{"line_number":6587,"context_line":"                mock.call(c, instance, False, dest)])"},{"line_number":6588,"context_line":"            post_live_migration_at_source.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_51499a5d","line":6585,"range":{"start_line":6585,"start_character":39,"end_line":6585,"end_character":48},"in_reply_to":"ff570b3c_c1a34d9d","updated":"2020-05-20 16:15:24.000000000","message":"Done","commit_id":"0a083e5eb127a479c1f5eee3db5bc9013d469eed"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0e9c0fcecd07062ae1771d0519f5768e70560154","unresolved":false,"context_lines":[{"line_number":6408,"context_line":"        self.assertEqual(\u0027completed\u0027, migration.status)"},{"line_number":6409,"context_line":"        mock_pre.assert_called_once_with(c, instance, False, None,"},{"line_number":6410,"context_line":"                                         dest, migrate_data)"},{"line_number":6411,"context_line":"        mock_migrate.assert_called_once_with(c, instance, mock.ANY)"},{"line_number":6412,"context_line":"        mock_post.assert_called_once_with(c, instance, False, dest)"},{"line_number":6413,"context_line":"        mock_clear.assert_called_once_with(mock.ANY)"},{"line_number":6414,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_1f01ddaf","line":6411,"range":{"start_line":6411,"start_character":58,"end_line":6411,"end_character":66},"updated":"2020-05-21 08:59:30.000000000","message":"IMO, it had better be a Migration object or test.MatchType(objects.Migration) .","commit_id":"498207e5eafbf84b13d809e07c1d844a6b629a07"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0cf6888a879daffaff864affded0d729dd570422","unresolved":false,"context_lines":[{"line_number":6408,"context_line":"        self.assertEqual(\u0027completed\u0027, migration.status)"},{"line_number":6409,"context_line":"        mock_pre.assert_called_once_with(c, instance, False, None,"},{"line_number":6410,"context_line":"                                         dest, migrate_data)"},{"line_number":6411,"context_line":"        mock_migrate.assert_called_once_with(c, instance, mock.ANY)"},{"line_number":6412,"context_line":"        mock_post.assert_called_once_with(c, instance, False, dest)"},{"line_number":6413,"context_line":"        mock_clear.assert_called_once_with(mock.ANY)"},{"line_number":6414,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_6c16ecf3","line":6411,"range":{"start_line":6411,"start_character":58,"end_line":6411,"end_character":66},"in_reply_to":"ff570b3c_1f01ddaf","updated":"2020-08-19 23:12:33.000000000","message":"+1","commit_id":"498207e5eafbf84b13d809e07c1d844a6b629a07"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0e9c0fcecd07062ae1771d0519f5768e70560154","unresolved":false,"context_lines":[{"line_number":6515,"context_line":""},{"line_number":6516,"context_line":"        self.assertIn(\u0027cleanup\u0027, result)"},{"line_number":6517,"context_line":"        self.assertTrue(result[\u0027cleanup\u0027])"},{"line_number":6518,"context_line":"        mock_migrate.assert_called_once_with(c, instance, mock.ANY)"},{"line_number":6519,"context_line":"        mock_post.assert_called_once_with(c, instance, False, dest)"},{"line_number":6520,"context_line":"        mock_clear.assert_called_once_with(mock.ANY)"},{"line_number":6521,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_5f30759f","line":6518,"range":{"start_line":6518,"start_character":58,"end_line":6518,"end_character":66},"updated":"2020-05-21 08:59:30.000000000","message":"ditto","commit_id":"498207e5eafbf84b13d809e07c1d844a6b629a07"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0e9c0fcecd07062ae1771d0519f5768e70560154","unresolved":false,"context_lines":[{"line_number":6580,"context_line":"                                        \u0027block_device_mapping\u0027: []},"},{"line_number":6581,"context_line":"                                        migrate_data)])"},{"line_number":6582,"context_line":"            migrate_instance_start.assert_has_calls(["},{"line_number":6583,"context_line":"                mock.call(c, instance, mock.ANY)])"},{"line_number":6584,"context_line":"            post_live_migration_at_destination.assert_has_calls(["},{"line_number":6585,"context_line":"                mock.call(c, instance, False, dest)])"},{"line_number":6586,"context_line":"            post_live_migration_at_source.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_7f29f934","line":6583,"range":{"start_line":6583,"start_character":39,"end_line":6583,"end_character":47},"updated":"2020-05-21 08:59:30.000000000","message":"ditto","commit_id":"498207e5eafbf84b13d809e07c1d844a6b629a07"}]}
