)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"07e930b38b438fe4860e53ad188d69a493651ac0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"But rbd backend is treated as shared storage too, it will create"},{"line_number":12,"context_line":"inst_base on source host also. In this situation, even if the resize"},{"line_number":13,"context_line":"finished, the inst_base on source host will still exist."},{"line_number":14,"context_line":"This will trigger errors when live-migration to the source host."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id66219bf054b5fda86656b6834ffd463a8d7f2e5"},{"line_number":17,"context_line":"Closes-Bug:#1794647"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_4a24870e","line":14,"updated":"2018-10-10 23:11:58.000000000","message":"Please be more specific about what fails when trying to live migrate back to the source host.","commit_id":"f4dcad73cbe839972d7cda10499b4ee12f39d468"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"adbd0469a439ca5e99239c269b7f077340476513","unresolved":false,"context_lines":[{"line_number":11,"context_line":"But rbd backend is treated as shared storage too, it will create"},{"line_number":12,"context_line":"inst_base on source host also. In this situation, even if the resize"},{"line_number":13,"context_line":"finished, the inst_base on source host will still exist."},{"line_number":14,"context_line":"This will trigger errors when live-migration to the source host."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id66219bf054b5fda86656b6834ffd463a8d7f2e5"},{"line_number":17,"context_line":"Closes-Bug:#1794647"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9fdfeff1_bd6cc136","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":64},"updated":"2019-01-22 15:31:29.000000000","message":"As requested in PS1, it would be nice to give a bit more detail about what fails when live migrating back to the source.","commit_id":"da955bc92b89eda8edb0f501911394db0d3a7fe7"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f50e44e5eb9ae1ed6a686096da3a6cb7574c38a","unresolved":false,"context_lines":[{"line_number":1187,"context_line":"                time.sleep(random.randint(20, 200) / 100.0)"},{"line_number":1188,"context_line":"            attempts +\u003d 1"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"        # NOTE(mriedem): Some image backends will recreate the instance path"},{"line_number":1191,"context_line":"        # and disk.info during init, and all we need the root disk for"},{"line_number":1192,"context_line":"        # here is removing cloned snapshots which is backend-specific, so"},{"line_number":1193,"context_line":"        # check that first before initializing the image backend object. If"},{"line_number":1194,"context_line":"        # there is ever an image type that supports clone *and* re-creates"},{"line_number":1195,"context_line":"        # the instance directory and disk.info on init, this condition will"},{"line_number":1196,"context_line":"        # need to be re-visited to make sure that backend doesn\u0027t re-create"},{"line_number":1197,"context_line":"        # the disk. Refer to bugs: 1666831 1728603 1769131"},{"line_number":1198,"context_line":"        if self.image_backend.backend(CONF.libvirt.images_type).SUPPORTS_CLONE:"},{"line_number":1199,"context_line":"            root_disk \u003d self.image_backend.by_name(instance, \u0027disk\u0027)"},{"line_number":1200,"context_line":"            if root_disk.exists():"},{"line_number":1201,"context_line":"                root_disk.remove_snap(libvirt_utils.RESIZE_SNAPSHOT_NAME)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_ca02d772","line":1198,"range":{"start_line":1190,"start_character":8,"end_line":1198,"end_character":79},"updated":"2018-10-10 23:08:51.000000000","message":"What you\u0027re trying to fix sounds similar to something I fixed here, and did it in a more generic way rather than hard-coding image type config checks directly in the code. I\u0027d like to see something similar to this that checks the SUPPORTS_CLONE flag on the image backend rather than the configuration.","commit_id":"f4dcad73cbe839972d7cda10499b4ee12f39d468"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"07e930b38b438fe4860e53ad188d69a493651ac0","unresolved":false,"context_lines":[{"line_number":7639,"context_line":"        is_block_migration \u003d migrate_data.block_migration"},{"line_number":7640,"context_line":""},{"line_number":7641,"context_line":"        if not is_shared_instance_path:"},{"line_number":7642,"context_line":"            instance_dir \u003d libvirt_utils.get_instance_path_at_destination("},{"line_number":7643,"context_line":"                            instance, migrate_data)"},{"line_number":7644,"context_line":""},{"line_number":7645,"context_line":"            if os.path.exists(instance_dir):"},{"line_number":7646,"context_line":"                raise exception.DestinationDiskExists(path\u003dinstance_dir)"},{"line_number":7647,"context_line":""},{"line_number":7648,"context_line":"            LOG.debug(\u0027Creating instance directory: %s\u0027, instance_dir,"},{"line_number":7649,"context_line":"                      instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_ea7a33ee","line":7646,"range":{"start_line":7642,"start_character":12,"end_line":7646,"end_character":72},"updated":"2018-10-10 23:11:58.000000000","message":"Is this what fails when trying to live migrate back to the original host?","commit_id":"f4dcad73cbe839972d7cda10499b4ee12f39d468"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f50e44e5eb9ae1ed6a686096da3a6cb7574c38a","unresolved":false,"context_lines":[{"line_number":8301,"context_line":"            # if we are migrating the instance with shared storage then"},{"line_number":8302,"context_line":"            # create the directory. If it is a remote node the directory"},{"line_number":8303,"context_line":"            # has already been created"},{"line_number":8304,"context_line":"            if shared_storage and CONF.libvirt.images_type !\u003d \u0027rbd\u0027:"},{"line_number":8305,"context_line":"                dest \u003d None"},{"line_number":8306,"context_line":"                fileutils.ensure_tree(inst_base)"},{"line_number":8307,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8a2dbffd","line":8304,"updated":"2018-10-10 23:08:51.000000000","message":"See above. Also, there should be a comment on why this condition is necessary.","commit_id":"f4dcad73cbe839972d7cda10499b4ee12f39d468"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"b9d3b64357fe58c5c4d8128e7b415ce93323c459","unresolved":false,"context_lines":[{"line_number":8303,"context_line":"            # has already been created"},{"line_number":8304,"context_line":"            if shared_storage and \\"},{"line_number":8305,"context_line":"                    self.image_backend.backend(CONF.libvirt.images_type).\\"},{"line_number":8306,"context_line":"                            ENSURE_INIT_BASE:"},{"line_number":8307,"context_line":"                dest \u003d None"},{"line_number":8308,"context_line":"                fileutils.ensure_tree(inst_base)"},{"line_number":8309,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_05e639e9","line":8306,"range":{"start_line":8306,"start_character":28,"end_line":8306,"end_character":44},"updated":"2019-01-31 10:56:54.000000000","message":"Couldn\u0027t we just use is_shared_block_storage here instead of adding ENSURE_INIT_BASE?","commit_id":"da955bc92b89eda8edb0f501911394db0d3a7fe7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"adbd0469a439ca5e99239c269b7f077340476513","unresolved":false,"context_lines":[{"line_number":8302,"context_line":"            # create the directory. If it is a remote node the directory"},{"line_number":8303,"context_line":"            # has already been created"},{"line_number":8304,"context_line":"            if shared_storage and \\"},{"line_number":8305,"context_line":"                    self.image_backend.backend(CONF.libvirt.images_type).\\"},{"line_number":8306,"context_line":"                            ENSURE_INIT_BASE:"},{"line_number":8307,"context_line":"                dest \u003d None"},{"line_number":8308,"context_line":"                fileutils.ensure_tree(inst_base)"},{"line_number":8309,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_5d7ef5e4","line":8306,"range":{"start_line":8305,"start_character":20,"end_line":8306,"end_character":44},"updated":"2019-01-22 15:31:29.000000000","message":"From PS1: \"there should be a comment on why this condition is necessary.\"","commit_id":"da955bc92b89eda8edb0f501911394db0d3a7fe7"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"adbd0469a439ca5e99239c269b7f077340476513","unresolved":false,"context_lines":[{"line_number":56,"context_line":"class Image(object):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    SUPPORTS_CLONE \u003d False"},{"line_number":59,"context_line":"    ENSURE_INIT_BASE \u003d True"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def __init__(self, path, source_type, driver_format, is_block_dev\u003dFalse):"},{"line_number":62,"context_line":"        \"\"\"Image initialization."}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_dd242510","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":20},"updated":"2019-01-22 15:31:29.000000000","message":"A comment about what this means for an image backend would be good.","commit_id":"da955bc92b89eda8edb0f501911394db0d3a7fe7"}]}
