)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"3f5251b98fe73401f4cb33d53b5c58f9735c3988","unresolved":false,"context_lines":[{"line_number":10,"context_line":"instance file keeping instance disks. It is required in shared block"},{"line_number":11,"context_line":"storage case. But migrate_data is an object that exists in live"},{"line_number":12,"context_line":"migration case only. Because that other cases (like resizing) cannot"},{"line_number":13,"context_line":"delete the files properly."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This fix changes the logic to delete the files not depending on"},{"line_number":16,"context_line":"migrate_data. The work is based on conclusions:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a461143_0cc2be85","line":13,"updated":"2017-01-26 13:33:16.000000000","message":"This paragraph isn\u0027t true. See code comment.","commit_id":"9b5a7cbb841ccb591bfd5e7a19880e21d1734ede"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"d8e95e5e6f743ff3afeea1126c1eb8923e9e4878","unresolved":false,"context_lines":[{"line_number":10,"context_line":"instance file keeping instance disks. It is required in shared block"},{"line_number":11,"context_line":"storage case. But migrate_data is an object that exists in live"},{"line_number":12,"context_line":"migration case only. Because that other cases (like resizing) cannot"},{"line_number":13,"context_line":"delete the files properly."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This fix changes the logic to delete the files not depending on"},{"line_number":16,"context_line":"migrate_data. The work is based on conclusions:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a461143_1f780c8f","line":13,"in_reply_to":"3a461143_0cc2be85","updated":"2017-01-26 22:09:22.000000000","message":"There you wrote:\n\n\u003e destroy_disks here is not dependent on the existence of a migrate_data object. If destroy_disks is True, the code below will execute regardless of migrate_data.\n\nBut with \u0027keeping instance disks\u0027 i mean destroy_disks\u003dFalse. I.e. a caller wants to clean instance directory, but does not want to destroy disks, wants to keep them.","commit_id":"9b5a7cbb841ccb591bfd5e7a19880e21d1734ede"}],"nova/tests/unit/virt/libvirt/fake_imagebackend.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"91cecbbb7d1d6839bd29b24d618bbf299c9c4888","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            return disk"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        image_init.is_file_in_instance_path \u003d ("},{"line_number":160,"context_line":"            lambda: self.is_file_in_instance_path)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        return image_init"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_9d7c1674","line":160,"updated":"2017-01-26 14:25:39.000000000","message":"Eurgh, you need a \u0027class method\u0027. I hadn\u0027t considered this. I suspect this means we should be returning a mock here, eg:\n\nimage_class \u003d mock.MagicMock(side_effect\u003dimage_init)\nimage_class.is_file_in_instance_path.return_value \u003d ...\nreturn image_class","commit_id":"9b5a7cbb841ccb591bfd5e7a19880e21d1734ede"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"91cecbbb7d1d6839bd29b24d618bbf299c9c4888","unresolved":false,"context_lines":[{"line_number":14291,"context_line":"                is_shared_block_storage\u003dTrue)"},{"line_number":14292,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":14293,"context_line":"        backend \u003d self.useFixture(fake_imagebackend.ImageBackendFixture())"},{"line_number":14294,"context_line":"        backend.is_file_in_instance_path \u003d False"},{"line_number":14295,"context_line":"        drvr.cleanup("},{"line_number":14296,"context_line":"            self.context, instance, network_info\u003d{}, destroy_disks\u003dFalse,"},{"line_number":14297,"context_line":"            migrate_data\u003dmigrate_data, destroy_vifs\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_ddc4de93","line":14294,"updated":"2017-01-26 14:25:39.000000000","message":"Nah, this should be an argument to the constructor of ImageBackendFixture. We shouldn\u0027t be poking around inside other classes, even test classes.","commit_id":"9b5a7cbb841ccb591bfd5e7a19880e21d1734ede"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"3f5251b98fe73401f4cb33d53b5c58f9735c3988","unresolved":false,"context_lines":[{"line_number":946,"context_line":"        is_shared_block_storage \u003d False"},{"line_number":947,"context_line":"        if migrate_data and \u0027is_shared_block_storage\u0027 in migrate_data:"},{"line_number":948,"context_line":"            is_shared_block_storage \u003d migrate_data.is_shared_block_storage"},{"line_number":949,"context_line":"        if destroy_disks or is_shared_block_storage:"},{"line_number":950,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":951,"context_line":"                                                        \u00270\u0027))"},{"line_number":952,"context_line":"            success \u003d self.delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a461143_6c5ee2ea","side":"PARENT","line":949,"updated":"2017-01-26 13:33:16.000000000","message":"Continuation from commit comment:\n\ndestroy_disks here is not dependent on the existence of a migrate_data object. If destroy_disks is True, the code below will execute regardless of migrate_data.","commit_id":"6b2eb7895c50661ef3d93bd291ea5765fef7c8ce"}]}
