)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cf0530a65489e9239a682905bb0460fd6b85f51c","unresolved":true,"context_lines":[{"line_number":27,"context_line":"import shutil"},{"line_number":28,"context_line":"import signal"},{"line_number":29,"context_line":"import sys"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"import futurist"},{"line_number":32,"context_line":"import testtools"},{"line_number":33,"context_line":"import threading"}],"source_content_type":"text/x-python","patch_set":2,"id":"09aa7670_d3ada201","line":30,"updated":"2025-12-04 21:12:11.000000000","message":"Doesn\u0027t much matter, but I don\u0027t think adding this space is correct. futurist and testtools belong in the second block, but threading, time, and unittest are orphaned from the first block by this :)","commit_id":"561246798f5b6ab8c046dc544ba8a79251d54c7e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c521635d5c4d655dacb85fb9aebff6e21c86b0a7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import shutil"},{"line_number":28,"context_line":"import signal"},{"line_number":29,"context_line":"import sys"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"import futurist"},{"line_number":32,"context_line":"import testtools"},{"line_number":33,"context_line":"import threading"}],"source_content_type":"text/x-python","patch_set":2,"id":"c68f6e7c_4c33bbed","line":30,"in_reply_to":"09aa7670_d3ada201","updated":"2025-12-05 09:10:33.000000000","message":"yeah the my IDE was wrong to put futurist there with a space, but it was wrong in a way that it did not break the shorting as it created a new block. Bad IDE. I added futurist to the second block now. I did not touch testools to limit the backport conflicts in the future.","commit_id":"561246798f5b6ab8c046dc544ba8a79251d54c7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cf0530a65489e9239a682905bb0460fd6b85f51c","unresolved":true,"context_lines":[{"line_number":15291,"context_line":"        mock_copy_disk_path.assert_called_once_with(self.context, instance,"},{"line_number":15292,"context_line":"                                                    guest)"},{"line_number":15293,"context_line":""},{"line_number":15294,"context_line":"        class AnyFuture(object):"},{"line_number":15295,"context_line":"            def __eq__(self, other):"},{"line_number":15296,"context_line":"                return type(other) is futurist.Future"},{"line_number":15297,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6213f464_fd6e8d2a","line":15294,"updated":"2025-12-04 21:12:11.000000000","message":"I think we might as well remove the python2 inhert-from-object since we\u0027re updating this line anyway :)","commit_id":"561246798f5b6ab8c046dc544ba8a79251d54c7e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c521635d5c4d655dacb85fb9aebff6e21c86b0a7","unresolved":false,"context_lines":[{"line_number":15291,"context_line":"        mock_copy_disk_path.assert_called_once_with(self.context, instance,"},{"line_number":15292,"context_line":"                                                    guest)"},{"line_number":15293,"context_line":""},{"line_number":15294,"context_line":"        class AnyFuture(object):"},{"line_number":15295,"context_line":"            def __eq__(self, other):"},{"line_number":15296,"context_line":"                return type(other) is futurist.Future"},{"line_number":15297,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"6f8a6818_8fe5c305","line":15294,"in_reply_to":"6213f464_fd6e8d2a","updated":"2025-12-05 09:10:33.000000000","message":"heh, I can drop the whole class as it is unused now that we match the actula arg with the mock_spawn.return_value instead.","commit_id":"561246798f5b6ab8c046dc544ba8a79251d54c7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b255b89a1cb21601b8ac2c816a4dffd3551b9747","unresolved":false,"context_lines":[{"line_number":15291,"context_line":"        mock_copy_disk_path.assert_called_once_with(self.context, instance,"},{"line_number":15292,"context_line":"                                                    guest)"},{"line_number":15293,"context_line":""},{"line_number":15294,"context_line":"        class AnyFuture(object):"},{"line_number":15295,"context_line":"            def __eq__(self, other):"},{"line_number":15296,"context_line":"                return type(other) is futurist.Future"},{"line_number":15297,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"aa63394d_fc5e6f6f","line":15294,"in_reply_to":"6f8a6818_8fe5c305","updated":"2025-12-05 15:02:41.000000000","message":"Oh heh, yeah, I just saw it was modified but.. yeah :)","commit_id":"561246798f5b6ab8c046dc544ba8a79251d54c7e"}],"nova/tests/unit/virt/test_virt_drivers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cf0530a65489e9239a682905bb0460fd6b85f51c","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.guest.Guest.migrate\u0027,"},{"line_number":123,"context_line":"                      lambda self, destination, migrate_uri\u003dNone,"},{"line_number":124,"context_line":"                      migrate_disks\u003dNone, destination_xml\u003dNone, flags\u003d0,"},{"line_number":125,"context_line":"                      bandwidth\u003d0, parallel\u003d0: None)"},{"line_number":126,"context_line":"        # We can\u0027t actually make a config drive v2 because ensure_tree has"},{"line_number":127,"context_line":"        # been faked out"},{"line_number":128,"context_line":"        self.stub_out(\u0027nova.virt.configdrive.ConfigDriveBuilder.make_drive\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"726253c0_932c07e4","line":125,"updated":"2025-12-04 21:12:11.000000000","message":"I had this change stacked above this separately. Feels like we should just merge that separately from this to avoid confusion later, I just kept them separate so it was easy to see this failure.","commit_id":"561246798f5b6ab8c046dc544ba8a79251d54c7e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c521635d5c4d655dacb85fb9aebff6e21c86b0a7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.guest.Guest.migrate\u0027,"},{"line_number":123,"context_line":"                      lambda self, destination, migrate_uri\u003dNone,"},{"line_number":124,"context_line":"                      migrate_disks\u003dNone, destination_xml\u003dNone, flags\u003d0,"},{"line_number":125,"context_line":"                      bandwidth\u003d0, parallel\u003d0: None)"},{"line_number":126,"context_line":"        # We can\u0027t actually make a config drive v2 because ensure_tree has"},{"line_number":127,"context_line":"        # been faked out"},{"line_number":128,"context_line":"        self.stub_out(\u0027nova.virt.configdrive.ConfigDriveBuilder.make_drive\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"44c12831_73bdacd0","line":125,"in_reply_to":"726253c0_932c07e4","updated":"2025-12-05 09:10:33.000000000","message":"OK. I will reorder the two patches then. First the patch that does only this line. And then top of that the rest of the changes.","commit_id":"561246798f5b6ab8c046dc544ba8a79251d54c7e"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dccd0312201f93f42a4740603bf3792f52bf8e1b","unresolved":true,"context_lines":[{"line_number":11402,"context_line":"            if info.type \u003d\u003d libvirt.VIR_DOMAIN_JOB_NONE:"},{"line_number":11403,"context_line":"                # Either still running, or failed or completed,"},{"line_number":11404,"context_line":"                # lets untangle the mess"},{"line_number":11405,"context_line":"                if not future.done():"},{"line_number":11406,"context_line":"                    LOG.debug(\"Operation thread is still running\","},{"line_number":11407,"context_line":"                              instance\u003dinstance)"},{"line_number":11408,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1265b94b_10470d8e","line":11405,"updated":"2025-12-04 17:53:24.000000000","message":"I intentionally not calling future.result() in the else block as find_job_type will also detect potential edge cases leading to an info.type that is handled below by calling recovery. The future.result() will be called after the monitoring loop returns.","commit_id":"561246798f5b6ab8c046dc544ba8a79251d54c7e"}]}
