)]}'
{"nova/tests/functional/test_cross_cell_live_migrate.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b76fbde18c3424bc056324a3652f0e68743fdc46","unresolved":true,"context_lines":[{"line_number":895,"context_line":"    def test_same_cell_live_migrate_attached_volume(self):"},{"line_number":896,"context_line":"        \"\"\"Same-cell v2 migration preserves an attached data volume.\"\"\""},{"line_number":897,"context_line":"        self._test_volume_live_migrate("},{"line_number":898,"context_line":"            cross_cell\u003dFalse, boot_from_volume\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c8fc7b40_632566ce","line":898,"updated":"2026-10-05 18:13:19.000000000","message":"Note that most of these scenarios came from me asking an agent to survey all the existing live migration tests (including functional regression tests), figure out which ones applied to v2, and write them as appropriate for v2. I\u0027m not done with that yet, I have a few more classes of test it still needs to process, so this will expand soon.\n\nAlso note that this test file is improperly named and stems from early attempts to just add cross-cell functionality to the existing migration path. To avoid confusing the above process, I haven\u0027t renamed this file but I will.","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"}],"nova/tests/unit/conductor/tasks/test_live_migrate_v2.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        with test.nested("},{"line_number":102,"context_line":"            mock.patch.object(instance, \u0027get_bdms\u0027, return_value\u003d[]),"},{"line_number":103,"context_line":"            mock.patch.object(instance, \u0027obj_load_attr\u0027, side_effect\u003dload_attr),"},{"line_number":104,"context_line":"            mock.patch.object("},{"line_number":105,"context_line":"                live_migrate_v2.cross_cell_migrate,"},{"line_number":106,"context_line":"                \u0027clone_creatable_object\u0027, return_value\u003dtarget_instance),"}],"source_content_type":"text/x-python","patch_set":1,"id":"a0405585_778327b2","line":103,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            compute_rpcapi\u003dself.compute_rpcapi,"},{"line_number":140,"context_line":"            network_api\u003dself.network_api)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @mock.patch(\u0027nova.objects.ComputeNode.get_first_node_by_host_for_old_compat\u0027)"},{"line_number":143,"context_line":"    def test_execute(self, mock_get_cn):"},{"line_number":144,"context_line":"        self.network_api.has_port_binding_extension.return_value \u003d True"},{"line_number":145,"context_line":"        dest_check_data \u003d mock.sentinel.dest_check_data"}],"source_content_type":"text/x-python","patch_set":1,"id":"59668884_c7f4e85e","line":142,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    def test_execute(self, mock_get_cn):"},{"line_number":144,"context_line":"        self.network_api.has_port_binding_extension.return_value \u003d True"},{"line_number":145,"context_line":"        dest_check_data \u003d mock.sentinel.dest_check_data"},{"line_number":146,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_destination.return_value \u003d ("},{"line_number":147,"context_line":"            dest_check_data)"},{"line_number":148,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData(vifs\u003d[])"},{"line_number":149,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_source.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"249f9265_72775a16","line":146,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            self.network_api)"},{"line_number":169,"context_line":"        self.assertIs(result, migrate_data)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    @mock.patch(\u0027nova.objects.ComputeNode.get_first_node_by_host_for_old_compat\u0027)"},{"line_number":172,"context_line":"    def test_execute_no_port_binding_extension(self, mock_get_cn):"},{"line_number":173,"context_line":"        self.network_api.has_port_binding_extension.return_value \u003d False"},{"line_number":174,"context_line":"        dest_check_data \u003d mock.sentinel.dest_check_data"}],"source_content_type":"text/x-python","patch_set":1,"id":"f5e3b803_d965da62","line":171,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    def test_execute_no_port_binding_extension(self, mock_get_cn):"},{"line_number":173,"context_line":"        self.network_api.has_port_binding_extension.return_value \u003d False"},{"line_number":174,"context_line":"        dest_check_data \u003d mock.sentinel.dest_check_data"},{"line_number":175,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_destination.return_value \u003d ("},{"line_number":176,"context_line":"            dest_check_data)"},{"line_number":177,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData(vifs\u003d[])"},{"line_number":178,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_source.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"07985cda_991a082f","line":175,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":188,"context_line":"            self.network_api)"},{"line_number":189,"context_line":"        self.assertIs(result, migrate_data)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    @mock.patch(\u0027nova.objects.ComputeNode.get_first_node_by_host_for_old_compat\u0027)"},{"line_number":192,"context_line":"    def test_execute_without_migrate_vifs(self, mock_get_cn):"},{"line_number":193,"context_line":"        self.network_api.has_port_binding_extension.return_value \u003d True"},{"line_number":194,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_destination.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"0d0ff5af_b0518237","line":191,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    @mock.patch(\u0027nova.objects.ComputeNode.get_first_node_by_host_for_old_compat\u0027)"},{"line_number":192,"context_line":"    def test_execute_without_migrate_vifs(self, mock_get_cn):"},{"line_number":193,"context_line":"        self.network_api.has_port_binding_extension.return_value \u003d True"},{"line_number":194,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_destination.return_value \u003d ("},{"line_number":195,"context_line":"            mock.sentinel.dest_check_data)"},{"line_number":196,"context_line":"        migrate_data \u003d objects.LibvirtLiveMigrateData()"},{"line_number":197,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_source.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"03d5ee4c_2c208cde","line":194,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            self.assertRaises(exception.MigrationPreCheckError, task.execute)"},{"line_number":204,"context_line":"        mock_bind.assert_not_called()"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @mock.patch(\u0027nova.objects.ComputeNode.get_first_node_by_host_for_old_compat\u0027)"},{"line_number":207,"context_line":"    def test_execute_dest_check_timeout(self, mock_get_cn):"},{"line_number":208,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_destination.side_effect \u003d ("},{"line_number":209,"context_line":"            messaging.MessagingTimeout())"}],"source_content_type":"text/x-python","patch_set":1,"id":"240b0106_c25b802d","line":206,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    @mock.patch(\u0027nova.objects.ComputeNode.get_first_node_by_host_for_old_compat\u0027)"},{"line_number":207,"context_line":"    def test_execute_dest_check_timeout(self, mock_get_cn):"},{"line_number":208,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_destination.side_effect \u003d ("},{"line_number":209,"context_line":"            messaging.MessagingTimeout())"},{"line_number":210,"context_line":"        task \u003d self._make_task()"},{"line_number":211,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":1,"id":"cdbf726b_cda26499","line":208,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        self.assertRaises("},{"line_number":212,"context_line":"            exception.MigrationPreCheckError, task.execute)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @mock.patch(\u0027nova.objects.ComputeNode.get_first_node_by_host_for_old_compat\u0027)"},{"line_number":215,"context_line":"    def test_execute_source_check_timeout(self, mock_get_cn):"},{"line_number":216,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_destination.return_value \u003d ("},{"line_number":217,"context_line":"            mock.sentinel.dest_check_data)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2c8a78f4_052e5429","line":214,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    @mock.patch(\u0027nova.objects.ComputeNode.get_first_node_by_host_for_old_compat\u0027)"},{"line_number":215,"context_line":"    def test_execute_source_check_timeout(self, mock_get_cn):"},{"line_number":216,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_destination.return_value \u003d ("},{"line_number":217,"context_line":"            mock.sentinel.dest_check_data)"},{"line_number":218,"context_line":"        self.compute_rpcapi.check_can_live_migrate_v2_source.side_effect \u003d ("},{"line_number":219,"context_line":"            messaging.MessagingTimeout())"}],"source_content_type":"text/x-python","patch_set":1,"id":"391ad5ab_8e4ecebe","line":216,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"889e310c3ee6d175c928bbb30f03251d60c1d529","unresolved":false,"context_lines":[{"line_number":619,"context_line":""},{"line_number":620,"context_line":"    @mock.patch(\u0027nova.objects.Service.get_by_compute_host\u0027)"},{"line_number":621,"context_line":"    def test_check_host_is_up(self, mock_get_service):"},{"line_number":622,"context_line":"        mock_service \u003d mock_get_service.return_value"},{"line_number":623,"context_line":"        with test.nested("},{"line_number":624,"context_line":"            mock.patch.object(self.task, \u0027_get_cell_context_for_host\u0027,"},{"line_number":625,"context_line":"                              return_value\u003dself.context),"}],"source_content_type":"text/x-python","patch_set":1,"id":"8e9ef675_df7ff23c","line":622,"updated":"2026-10-05 19:38:21.000000000","message":"pep8: F841 local variable \u0027mock_service\u0027 is assigned to but never used","commit_id":"3ee5bddddab1885434507a6de7063f140366e106"}]}
