)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d1fec0d89ae2aac461cd410b2d7a154907ee698e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rebase qcow2 images when unshelving an instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"During unshelve, instance is spawn with image created by shelve"},{"line_number":10,"context_line":"and is deleted just after, instance.image_ref still point"},{"line_number":11,"context_line":"to the original instance build image."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9f560f44_48da2b17","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":34},"updated":"2020-08-17 10:35:42.000000000","message":"spawned","commit_id":"8953a689467f8c3e996086392251de67953a45ba"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f9b13133a6f792bc89866aa366efe175d589c1c8","unresolved":false,"context_lines":[{"line_number":22328,"context_line":"                base_root_fname)"},{"line_number":22329,"context_line":""},{"line_number":22330,"context_line":"        def do_create():"},{"line_number":22331,"context_line":"            drvr._create_and_inject_local_root(self.context,"},{"line_number":22332,"context_line":"                                               instance,"},{"line_number":22333,"context_line":"                                               False,"},{"line_number":22334,"context_line":"                                               \u0027\u0027,"},{"line_number":22335,"context_line":"                                               disk_images,"},{"line_number":22336,"context_line":"                                               None,"},{"line_number":22337,"context_line":"                                               None)"},{"line_number":22338,"context_line":""},{"line_number":22339,"context_line":"        # CASE 1: Original image is present in Glance. In that case the 2nd"},{"line_number":22340,"context_line":"        # fetch succeeds and we rebase instance disk to original image backing"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_1de0fe25","line":22337,"range":{"start_line":22331,"start_character":47,"end_line":22337,"end_character":52},"updated":"2020-07-21 11:14:35.000000000","message":"nit - can you avoid using all of this vertical space and just move things down onto L22332?\n\n    drvr._create_and_inject_local_root(\n        self.context, instance, False, \u0027\u0027, disk_images, None, None)","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"9fd3b3e1b310681dd14e2de731241c9e0257da36","unresolved":false,"context_lines":[{"line_number":22328,"context_line":"                base_root_fname)"},{"line_number":22329,"context_line":""},{"line_number":22330,"context_line":"        def do_create():"},{"line_number":22331,"context_line":"            drvr._create_and_inject_local_root(self.context,"},{"line_number":22332,"context_line":"                                               instance,"},{"line_number":22333,"context_line":"                                               False,"},{"line_number":22334,"context_line":"                                               \u0027\u0027,"},{"line_number":22335,"context_line":"                                               disk_images,"},{"line_number":22336,"context_line":"                                               None,"},{"line_number":22337,"context_line":"                                               None)"},{"line_number":22338,"context_line":""},{"line_number":22339,"context_line":"        # CASE 1: Original image is present in Glance. In that case the 2nd"},{"line_number":22340,"context_line":"        # fetch succeeds and we rebase instance disk to original image backing"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_c832cdf1","line":22337,"range":{"start_line":22331,"start_character":47,"end_line":22337,"end_character":52},"in_reply_to":"bf51134e_1de0fe25","updated":"2020-07-28 15:44:40.000000000","message":"Done","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6322a6e10954d10a5e04864219cbffb620aaa17d","unresolved":false,"context_lines":[{"line_number":22602,"context_line":""},{"line_number":22603,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver, \u0027_try_fetch_image_cache\u0027)"},{"line_number":22604,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver, \u0027_rebase_with_qemu_img\u0027)"},{"line_number":22605,"context_line":"    def test_unshelve_qcow2_rebase_image_during_create(self,"},{"line_number":22606,"context_line":"            mock_rebase, mock_fetch):"},{"line_number":22607,"context_line":"        self.flags(images_type\u003d\u0027qcow2\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":22608,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_505bc452","line":22605,"updated":"2020-07-31 12:18:26.000000000","message":"I\u0027m tempted to say these should be separate tests, perhaps with a shared base function. Unless others agree though, I guess that\u0027s a nice-to-have","commit_id":"d2f640432b2d08944e230886894ec35405acc2c6"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"df3e138ca6b4117fb1422ae563cc16a39cf2ac3c","unresolved":false,"context_lines":[{"line_number":22602,"context_line":""},{"line_number":22603,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver, \u0027_try_fetch_image_cache\u0027)"},{"line_number":22604,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver, \u0027_rebase_with_qemu_img\u0027)"},{"line_number":22605,"context_line":"    def test_unshelve_qcow2_rebase_image_during_create(self,"},{"line_number":22606,"context_line":"            mock_rebase, mock_fetch):"},{"line_number":22607,"context_line":"        self.flags(images_type\u003d\u0027qcow2\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":22608,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_dc7c6274","line":22605,"in_reply_to":"9f560f44_505bc452","updated":"2020-08-13 08:14:33.000000000","message":"Makes sense, I refacto that","commit_id":"d2f640432b2d08944e230886894ec35405acc2c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d1fec0d89ae2aac461cd410b2d7a154907ee698e","unresolved":false,"context_lines":[{"line_number":22677,"context_line":"        mock_rebase.assert_called_once_with(disk_path, expected_backing_file)"},{"line_number":22678,"context_line":""},{"line_number":22679,"context_line":"    def test_unshelve_qcow2_rebase_image_during_create(self):"},{"line_number":22680,"context_line":"        # Original image is present in Glance. In that case the 2nd"},{"line_number":22681,"context_line":"        # fetch succeeds and we rebase instance disk to original image backing"},{"line_number":22682,"context_line":"        # file, instance is back to nominal state: after unshelve,"},{"line_number":22683,"context_line":"        # instance.image_ref will match current backing file."}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_28c0972a","line":22680,"range":{"start_line":22680,"start_character":64,"end_line":22680,"end_character":67},"updated":"2020-08-17 10:35:42.000000000","message":"second","commit_id":"8953a689467f8c3e996086392251de67953a45ba"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d1fec0d89ae2aac461cd410b2d7a154907ee698e","unresolved":false,"context_lines":[{"line_number":22684,"context_line":"        self._test_unshelve_qcow2_rebase_image_during_create()"},{"line_number":22685,"context_line":""},{"line_number":22686,"context_line":"    def test_unshelve_qcow2_rebase_image_during_create_notfound(self):"},{"line_number":22687,"context_line":"        # Original image is no longer available in Glance, so 2nd fetch"},{"line_number":22688,"context_line":"        # will failed (HTTP 404). In that case qemu-img rebase will merge"},{"line_number":22689,"context_line":"        # backing file into disk, removing backing file dependency."},{"line_number":22690,"context_line":"        self._test_unshelve_qcow2_rebase_image_during_create("}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_88dc4319","line":22687,"range":{"start_line":22687,"start_character":62,"end_line":22687,"end_character":65},"updated":"2020-08-17 10:35:42.000000000","message":"second","commit_id":"8953a689467f8c3e996086392251de67953a45ba"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d1fec0d89ae2aac461cd410b2d7a154907ee698e","unresolved":false,"context_lines":[{"line_number":22685,"context_line":""},{"line_number":22686,"context_line":"    def test_unshelve_qcow2_rebase_image_during_create_notfound(self):"},{"line_number":22687,"context_line":"        # Original image is no longer available in Glance, so 2nd fetch"},{"line_number":22688,"context_line":"        # will failed (HTTP 404). In that case qemu-img rebase will merge"},{"line_number":22689,"context_line":"        # backing file into disk, removing backing file dependency."},{"line_number":22690,"context_line":"        self._test_unshelve_qcow2_rebase_image_during_create("},{"line_number":22691,"context_line":"                original_image_in_glance\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_48c50b3c","line":22688,"range":{"start_line":22688,"start_character":15,"end_line":22688,"end_character":21},"updated":"2020-08-17 10:35:42.000000000","message":"fail","commit_id":"8953a689467f8c3e996086392251de67953a45ba"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f9b13133a6f792bc89866aa366efe175d589c1c8","unresolved":false,"context_lines":[{"line_number":2905,"context_line":"        :type rebase_base: None or string"},{"line_number":2906,"context_line":"        \"\"\""},{"line_number":2907,"context_line":""},{"line_number":2908,"context_line":"        # It\u0027s unsure how well qemu-img handles network disks for"},{"line_number":2909,"context_line":"        # every protocol. So let\u0027s be safe."},{"line_number":2910,"context_line":"        active_protocol \u003d active_disk_object.source_protocol"},{"line_number":2911,"context_line":"        if active_protocol is not None:"},{"line_number":2912,"context_line":"            msg \u003d _(\"Something went wrong when deleting a volume snapshot: \""},{"line_number":2913,"context_line":"                    \"rebasing a %(protocol)s network disk using qemu-img \""},{"line_number":2914,"context_line":"                    \"has not been fully tested\") % {\u0027protocol\u0027:"},{"line_number":2915,"context_line":"                    active_protocol}"},{"line_number":2916,"context_line":"            LOG.error(msg)"},{"line_number":2917,"context_line":"            raise exception.InternalError(msg)"},{"line_number":2918,"context_line":""},{"line_number":2919,"context_line":"        if rebase_base is None:"},{"line_number":2920,"context_line":"            # If backing_file is specified as \"\" (the empty string), then"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_ed8a7fb9","side":"PARENT","line":2917,"range":{"start_line":2908,"start_character":0,"end_line":2917,"end_character":46},"updated":"2020-07-21 11:14:35.000000000","message":"We should just remove this in another change IMHO.","commit_id":"bc784a1c1fa6ae0fa332cfd4dfa35283d3ee2869"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"8002e811f573bb0778b6ca7f17de88a1d490ec16","unresolved":false,"context_lines":[{"line_number":2905,"context_line":"        :type rebase_base: None or string"},{"line_number":2906,"context_line":"        \"\"\""},{"line_number":2907,"context_line":""},{"line_number":2908,"context_line":"        # It\u0027s unsure how well qemu-img handles network disks for"},{"line_number":2909,"context_line":"        # every protocol. So let\u0027s be safe."},{"line_number":2910,"context_line":"        active_protocol \u003d active_disk_object.source_protocol"},{"line_number":2911,"context_line":"        if active_protocol is not None:"},{"line_number":2912,"context_line":"            msg \u003d _(\"Something went wrong when deleting a volume snapshot: \""},{"line_number":2913,"context_line":"                    \"rebasing a %(protocol)s network disk using qemu-img \""},{"line_number":2914,"context_line":"                    \"has not been fully tested\") % {\u0027protocol\u0027:"},{"line_number":2915,"context_line":"                    active_protocol}"},{"line_number":2916,"context_line":"            LOG.error(msg)"},{"line_number":2917,"context_line":"            raise exception.InternalError(msg)"},{"line_number":2918,"context_line":""},{"line_number":2919,"context_line":"        if rebase_base is None:"},{"line_number":2920,"context_line":"            # If backing_file is specified as \"\" (the empty string), then"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_c55d6416","side":"PARENT","line":2917,"range":{"start_line":2908,"start_character":0,"end_line":2917,"end_character":46},"in_reply_to":"bf51134e_ed8a7fb9","updated":"2020-07-23 09:11:20.000000000","message":"make sense","commit_id":"bc784a1c1fa6ae0fa332cfd4dfa35283d3ee2869"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f9b13133a6f792bc89866aa366efe175d589c1c8","unresolved":false,"context_lines":[{"line_number":2913,"context_line":"            b_file_fmt \u003d images.qemu_img_info(backing_file).file_format"},{"line_number":2914,"context_line":"            qemu_img_extra_arg \u003d [\u0027-F\u0027, b_file_fmt]"},{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"        qemu_img_extra_arg.append(source_path)"},{"line_number":2917,"context_line":"        # execute operation with disk concurrency semaphore"},{"line_number":2918,"context_line":"        with compute_utils.disk_ops_semaphore:"},{"line_number":2919,"context_line":"            processutils.execute(\"qemu-img\", \"rebase\", \"-b\", backing_file,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_afa03f93","line":2916,"range":{"start_line":2916,"start_character":8,"end_line":2916,"end_character":46},"updated":"2020-07-21 11:14:35.000000000","message":"This is going to conflict with I58dca95251b607eaff602783fee2fc38e2421944 btw, you might want to talk to gibi about landing that or this first.","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a9f0821ffe744ca5ab2d14e918dd09a82bd51793","unresolved":false,"context_lines":[{"line_number":2913,"context_line":"            b_file_fmt \u003d images.qemu_img_info(backing_file).file_format"},{"line_number":2914,"context_line":"            qemu_img_extra_arg \u003d [\u0027-F\u0027, b_file_fmt]"},{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"        qemu_img_extra_arg.append(source_path)"},{"line_number":2917,"context_line":"        # execute operation with disk concurrency semaphore"},{"line_number":2918,"context_line":"        with compute_utils.disk_ops_semaphore:"},{"line_number":2919,"context_line":"            processutils.execute(\"qemu-img\", \"rebase\", \"-b\", backing_file,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_f1b78639","line":2916,"range":{"start_line":2916,"start_character":8,"end_line":2916,"end_character":46},"in_reply_to":"bf51134e_05ebdc11","updated":"2020-07-23 09:34:36.000000000","message":"My commit can be the #3) I have to get back to that at some point but I don\u0027t want to block your patch.","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"8002e811f573bb0778b6ca7f17de88a1d490ec16","unresolved":false,"context_lines":[{"line_number":2913,"context_line":"            b_file_fmt \u003d images.qemu_img_info(backing_file).file_format"},{"line_number":2914,"context_line":"            qemu_img_extra_arg \u003d [\u0027-F\u0027, b_file_fmt]"},{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"        qemu_img_extra_arg.append(source_path)"},{"line_number":2917,"context_line":"        # execute operation with disk concurrency semaphore"},{"line_number":2918,"context_line":"        with compute_utils.disk_ops_semaphore:"},{"line_number":2919,"context_line":"            processutils.execute(\"qemu-img\", \"rebase\", \"-b\", backing_file,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_05ebdc11","line":2916,"range":{"start_line":2916,"start_character":8,"end_line":2916,"end_character":46},"in_reply_to":"bf51134e_afa03f93","updated":"2020-07-23 09:11:20.000000000","message":"exact, we can do following commits:\n1)gibi\u0027s one: I58dca95251b607eaff602783fee2fc38e2421944\n2)\"Make _rebase_with_qemu_img() generic\" (new one)\n3)Rebase qcow2(this one)\n\nor either:\n1)\"Make _rebase_with_qemu_img() generic\" (new one)\n2)Rebase qcow2(this one)\n3)gibi\u0027s one: I58dca95251b607eaff602783fee2fc38e2421944\n\nI have no preference, let\u0027s gibi advise on it.","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"9fd3b3e1b310681dd14e2de731241c9e0257da36","unresolved":false,"context_lines":[{"line_number":2913,"context_line":"            b_file_fmt \u003d images.qemu_img_info(backing_file).file_format"},{"line_number":2914,"context_line":"            qemu_img_extra_arg \u003d [\u0027-F\u0027, b_file_fmt]"},{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"        qemu_img_extra_arg.append(source_path)"},{"line_number":2917,"context_line":"        # execute operation with disk concurrency semaphore"},{"line_number":2918,"context_line":"        with compute_utils.disk_ops_semaphore:"},{"line_number":2919,"context_line":"            processutils.execute(\"qemu-img\", \"rebase\", \"-b\", backing_file,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_a86959bf","line":2916,"range":{"start_line":2916,"start_character":8,"end_line":2916,"end_character":46},"in_reply_to":"bf51134e_f1b78639","updated":"2020-07-28 15:44:40.000000000","message":"I added the new change in same topic:\nhttps://review.opendev.org/#/c/743537/1","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f9b13133a6f792bc89866aa366efe175d589c1c8","unresolved":false,"context_lines":[{"line_number":2915,"context_line":""},{"line_number":2916,"context_line":"        qemu_img_extra_arg.append(source_path)"},{"line_number":2917,"context_line":"        # execute operation with disk concurrency semaphore"},{"line_number":2918,"context_line":"        with compute_utils.disk_ops_semaphore:"},{"line_number":2919,"context_line":"            processutils.execute(\"qemu-img\", \"rebase\", \"-b\", backing_file,"},{"line_number":2920,"context_line":"                                 *qemu_img_extra_arg)"},{"line_number":2921,"context_line":""},{"line_number":2922,"context_line":"    def _volume_snapshot_delete(self, context, instance, volume_id,"},{"line_number":2923,"context_line":"                                snapshot_id, delete_info\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_2dd75725","line":2920,"range":{"start_line":2918,"start_character":0,"end_line":2920,"end_character":53},"updated":"2020-07-21 11:14:35.000000000","message":"We need to move this down into privsep in a FUP.","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"f9b13133a6f792bc89866aa366efe175d589c1c8","unresolved":false,"context_lines":[{"line_number":3062,"context_line":"                LOG.debug(\u0027Guest is not running so doing a block rebase \u0027"},{"line_number":3063,"context_line":"                          \u0027using \"qemu-img rebase\"\u0027, instance\u003dinstance)"},{"line_number":3064,"context_line":""},{"line_number":3065,"context_line":"                # It\u0027s unsure how well qemu-img handles network disks for"},{"line_number":3066,"context_line":"                # every protocol. So let\u0027s be safe."},{"line_number":3067,"context_line":"                active_protocol \u003d active_disk_object.source_protocol"},{"line_number":3068,"context_line":"                if active_protocol is not None:"},{"line_number":3069,"context_line":"                    msg \u003d _(\"Something went wrong when deleting a volume \""},{"line_number":3070,"context_line":"                            \"snapshot: rebasing a %(protocol)s network disk \""},{"line_number":3071,"context_line":"                            \"using qemu-img has not been fully tested\""},{"line_number":3072,"context_line":"                           ) % {\u0027protocol\u0027: active_protocol}"},{"line_number":3073,"context_line":"                    LOG.error(msg)"},{"line_number":3074,"context_line":"                    raise exception.InternalError(msg)"},{"line_number":3075,"context_line":"                self._rebase_with_qemu_img(active_disk_object.source_path,"},{"line_number":3076,"context_line":"                                           rebase_base)"},{"line_number":3077,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_6f97473c","line":3074,"range":{"start_line":3065,"start_character":16,"end_line":3074,"end_character":54},"updated":"2020-07-21 11:14:35.000000000","message":"As I said before I think we can nuke this first in a separate change from the assisted volume snapshot flow.","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"8002e811f573bb0778b6ca7f17de88a1d490ec16","unresolved":false,"context_lines":[{"line_number":3062,"context_line":"                LOG.debug(\u0027Guest is not running so doing a block rebase \u0027"},{"line_number":3063,"context_line":"                          \u0027using \"qemu-img rebase\"\u0027, instance\u003dinstance)"},{"line_number":3064,"context_line":""},{"line_number":3065,"context_line":"                # It\u0027s unsure how well qemu-img handles network disks for"},{"line_number":3066,"context_line":"                # every protocol. So let\u0027s be safe."},{"line_number":3067,"context_line":"                active_protocol \u003d active_disk_object.source_protocol"},{"line_number":3068,"context_line":"                if active_protocol is not None:"},{"line_number":3069,"context_line":"                    msg \u003d _(\"Something went wrong when deleting a volume \""},{"line_number":3070,"context_line":"                            \"snapshot: rebasing a %(protocol)s network disk \""},{"line_number":3071,"context_line":"                            \"using qemu-img has not been fully tested\""},{"line_number":3072,"context_line":"                           ) % {\u0027protocol\u0027: active_protocol}"},{"line_number":3073,"context_line":"                    LOG.error(msg)"},{"line_number":3074,"context_line":"                    raise exception.InternalError(msg)"},{"line_number":3075,"context_line":"                self._rebase_with_qemu_img(active_disk_object.source_path,"},{"line_number":3076,"context_line":"                                           rebase_base)"},{"line_number":3077,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_85d6cc52","line":3074,"range":{"start_line":3065,"start_character":16,"end_line":3074,"end_character":54},"in_reply_to":"bf51134e_6f97473c","updated":"2020-07-23 09:11:20.000000000","message":"I see, maybe something like:\n\"Make _rebase_with_qemu_img() generic\"\nto move volume_delete specific code out of this method, to make it re-usable in this rebase change.","commit_id":"349b01b9c64333cef4744f1ea576f78d719d12ef"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"c9748a16351d3c065871cb3576dee36582378434","unresolved":false,"context_lines":[{"line_number":4132,"context_line":""},{"line_number":4133,"context_line":"        return created_disks"},{"line_number":4134,"context_line":""},{"line_number":4135,"context_line":"    def _finalize_unshelve_image(self, context, instance, backend):"},{"line_number":4136,"context_line":"        # NOTE(aarents): During qcow2 instance unshelve, backing file"},{"line_number":4137,"context_line":"        # represents shelved image, not original instance.image_ref."},{"line_number":4138,"context_line":"        # We rebase here instance disk to original image."}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_1cc18c81","line":4135,"range":{"start_line":4135,"start_character":8,"end_line":4135,"end_character":32},"updated":"2020-07-29 20:07:28.000000000","message":"nit - We should either make this specific to qcow2 or move the isinstance(backend, imagebackend.Qcow2) conditional in here.","commit_id":"b507ed340ef2e587e14bd1c2e5a24dc1723ddd6b"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"3f13711d47f0842b1b3dade88074ebd204ea9d32","unresolved":false,"context_lines":[{"line_number":4132,"context_line":""},{"line_number":4133,"context_line":"        return created_disks"},{"line_number":4134,"context_line":""},{"line_number":4135,"context_line":"    def _finalize_unshelve_image(self, context, instance, backend):"},{"line_number":4136,"context_line":"        # NOTE(aarents): During qcow2 instance unshelve, backing file"},{"line_number":4137,"context_line":"        # represents shelved image, not original instance.image_ref."},{"line_number":4138,"context_line":"        # We rebase here instance disk to original image."}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_3a3a8b97","line":4135,"range":{"start_line":4135,"start_character":8,"end_line":4135,"end_character":32},"in_reply_to":"9f560f44_1cc18c81","updated":"2020-07-30 08:56:31.000000000","message":"Yes, Done.","commit_id":"b507ed340ef2e587e14bd1c2e5a24dc1723ddd6b"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"c9748a16351d3c065871cb3576dee36582378434","unresolved":false,"context_lines":[{"line_number":4149,"context_line":"                                        context, root_fname, base_image_ref,"},{"line_number":4150,"context_line":"                                        instance, None)"},{"line_number":4151,"context_line":"        except exception.ImageNotFound:"},{"line_number":4152,"context_line":"            LOG.warning(\u0027Original image is unavailable, \u0027"},{"line_number":4153,"context_line":"                        \u0027disk will be flattened.\u0027,"},{"line_number":4154,"context_line":"                        instance\u003dinstance)"},{"line_number":4155,"context_line":"            base_backing_fname \u003d None"},{"line_number":4156,"context_line":""},{"line_number":4157,"context_line":"        LOG.info(\u0027Rebasing disk image.\u0027, instance\u003dinstance)"},{"line_number":4158,"context_line":"        self._rebase_with_qemu_img(backend.path, base_backing_fname)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_7cca486d","line":4155,"range":{"start_line":4152,"start_character":0,"end_line":4155,"end_character":37},"updated":"2020-07-29 20:07:28.000000000","message":"nit - Can you add some context here either in the comment or the LOG highlighting that we need to flatten it so it no longer points to the cached unshelved image?","commit_id":"b507ed340ef2e587e14bd1c2e5a24dc1723ddd6b"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"3f13711d47f0842b1b3dade88074ebd204ea9d32","unresolved":false,"context_lines":[{"line_number":4149,"context_line":"                                        context, root_fname, base_image_ref,"},{"line_number":4150,"context_line":"                                        instance, None)"},{"line_number":4151,"context_line":"        except exception.ImageNotFound:"},{"line_number":4152,"context_line":"            LOG.warning(\u0027Original image is unavailable, \u0027"},{"line_number":4153,"context_line":"                        \u0027disk will be flattened.\u0027,"},{"line_number":4154,"context_line":"                        instance\u003dinstance)"},{"line_number":4155,"context_line":"            base_backing_fname \u003d None"},{"line_number":4156,"context_line":""},{"line_number":4157,"context_line":"        LOG.info(\u0027Rebasing disk image.\u0027, instance\u003dinstance)"},{"line_number":4158,"context_line":"        self._rebase_with_qemu_img(backend.path, base_backing_fname)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_5af01f68","line":4155,"range":{"start_line":4152,"start_character":0,"end_line":4155,"end_character":37},"in_reply_to":"9f560f44_7cca486d","updated":"2020-07-30 08:56:31.000000000","message":"Yeah, so I tried something more verbose. Hope it will not be too frenglish. Done.","commit_id":"b507ed340ef2e587e14bd1c2e5a24dc1723ddd6b"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"c9748a16351d3c065871cb3576dee36582378434","unresolved":false,"context_lines":[{"line_number":4154,"context_line":"                        instance\u003dinstance)"},{"line_number":4155,"context_line":"            base_backing_fname \u003d None"},{"line_number":4156,"context_line":""},{"line_number":4157,"context_line":"        LOG.info(\u0027Rebasing disk image.\u0027, instance\u003dinstance)"},{"line_number":4158,"context_line":"        self._rebase_with_qemu_img(backend.path, base_backing_fname)"},{"line_number":4159,"context_line":""},{"line_number":4160,"context_line":"    def _create_configdrive(self, context, instance, injection_info,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_9ca47cbb","line":4157,"range":{"start_line":4157,"start_character":0,"end_line":4157,"end_character":59},"updated":"2020-07-29 20:07:28.000000000","message":"nit - Would be nice to move this into the following call in your previous refactor change tbh.","commit_id":"b507ed340ef2e587e14bd1c2e5a24dc1723ddd6b"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"3f13711d47f0842b1b3dade88074ebd204ea9d32","unresolved":false,"context_lines":[{"line_number":4154,"context_line":"                        instance\u003dinstance)"},{"line_number":4155,"context_line":"            base_backing_fname \u003d None"},{"line_number":4156,"context_line":""},{"line_number":4157,"context_line":"        LOG.info(\u0027Rebasing disk image.\u0027, instance\u003dinstance)"},{"line_number":4158,"context_line":"        self._rebase_with_qemu_img(backend.path, base_backing_fname)"},{"line_number":4159,"context_line":""},{"line_number":4160,"context_line":"    def _create_configdrive(self, context, instance, injection_info,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_5a4c9f9d","line":4157,"range":{"start_line":4157,"start_character":0,"end_line":4157,"end_character":59},"in_reply_to":"9f560f44_9ca47cbb","updated":"2020-07-30 08:56:31.000000000","message":"I have a light preference to let it here, but if someone else think it is better, I will.","commit_id":"b507ed340ef2e587e14bd1c2e5a24dc1723ddd6b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6322a6e10954d10a5e04864219cbffb620aaa17d","unresolved":false,"context_lines":[{"line_number":4119,"context_line":"                                        root_fname, disk_images[\u0027image_id\u0027],"},{"line_number":4120,"context_line":"                                        instance, size, fallback_from_host)"},{"line_number":4121,"context_line":""},{"line_number":4122,"context_line":"            if (instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED and"},{"line_number":4123,"context_line":"                   isinstance(backend, imagebackend.Qcow2)):"},{"line_number":4124,"context_line":"                self._finalize_unshelve_qcow2_image(context, instance, backend)"},{"line_number":4125,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_f095b8e5","line":4122,"range":{"start_line":4122,"start_character":12,"end_line":4122,"end_character":68},"updated":"2020-07-31 12:18:26.000000000","message":"Could we get a context comment before this conditional summarizing what\u0027s so special about this state and backend combination?","commit_id":"d2f640432b2d08944e230886894ec35405acc2c6"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"df3e138ca6b4117fb1422ae563cc16a39cf2ac3c","unresolved":false,"context_lines":[{"line_number":4119,"context_line":"                                        root_fname, disk_images[\u0027image_id\u0027],"},{"line_number":4120,"context_line":"                                        instance, size, fallback_from_host)"},{"line_number":4121,"context_line":""},{"line_number":4122,"context_line":"            if (instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED and"},{"line_number":4123,"context_line":"                   isinstance(backend, imagebackend.Qcow2)):"},{"line_number":4124,"context_line":"                self._finalize_unshelve_qcow2_image(context, instance, backend)"},{"line_number":4125,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_1c96da95","line":4122,"range":{"start_line":4122,"start_character":12,"end_line":4122,"end_character":68},"in_reply_to":"9f560f44_f095b8e5","updated":"2020-08-13 08:14:33.000000000","message":"comment Added","commit_id":"d2f640432b2d08944e230886894ec35405acc2c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6322a6e10954d10a5e04864219cbffb620aaa17d","unresolved":false,"context_lines":[{"line_number":4136,"context_line":"        # NOTE(aarents): During qcow2 instance unshelve, backing file"},{"line_number":4137,"context_line":"        # represents shelved image, not original instance.image_ref."},{"line_number":4138,"context_line":"        # We rebase here instance disk to original image."},{"line_number":4139,"context_line":"        # This second fetch call do nothing except downloading original backing"},{"line_number":4140,"context_line":"        # file if missing, as image disk have already been created/resized by"},{"line_number":4141,"context_line":"        # first fetch call."},{"line_number":4142,"context_line":"        base_dir \u003d self.image_cache_manager.cache_dir"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_908efccd","line":4139,"range":{"start_line":4139,"start_character":33,"end_line":4139,"end_character":35},"updated":"2020-07-31 12:18:26.000000000","message":"does","commit_id":"d2f640432b2d08944e230886894ec35405acc2c6"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"df3e138ca6b4117fb1422ae563cc16a39cf2ac3c","unresolved":false,"context_lines":[{"line_number":4136,"context_line":"        # NOTE(aarents): During qcow2 instance unshelve, backing file"},{"line_number":4137,"context_line":"        # represents shelved image, not original instance.image_ref."},{"line_number":4138,"context_line":"        # We rebase here instance disk to original image."},{"line_number":4139,"context_line":"        # This second fetch call do nothing except downloading original backing"},{"line_number":4140,"context_line":"        # file if missing, as image disk have already been created/resized by"},{"line_number":4141,"context_line":"        # first fetch call."},{"line_number":4142,"context_line":"        base_dir \u003d self.image_cache_manager.cache_dir"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_fc92069f","line":4139,"range":{"start_line":4139,"start_character":33,"end_line":4139,"end_character":35},"in_reply_to":"9f560f44_908efccd","updated":"2020-08-13 08:14:33.000000000","message":"Done","commit_id":"d2f640432b2d08944e230886894ec35405acc2c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6322a6e10954d10a5e04864219cbffb620aaa17d","unresolved":false,"context_lines":[{"line_number":4154,"context_line":"            # is successfull)."},{"line_number":4155,"context_line":"            LOG.warning(\u0027Current disk image is created on top of shelved \u0027"},{"line_number":4156,"context_line":"                        \u0027image and cannot be rebased to original image \u0027"},{"line_number":4157,"context_line":"                        \u0027because no more available in image service, disk \u0027"},{"line_number":4158,"context_line":"                        \u0027will be consequently flattened.\u0027,"},{"line_number":4159,"context_line":"                        instance\u003dinstance)"},{"line_number":4160,"context_line":"            base_backing_fname \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_f063f818","line":4157,"range":{"start_line":4157,"start_character":34,"end_line":4157,"end_character":51},"updated":"2020-07-31 12:18:26.000000000","message":"it is no longer available in the","commit_id":"d2f640432b2d08944e230886894ec35405acc2c6"},{"author":{"_account_id":28332,"name":"Alexandre arents","email":"alexandre.arents@corp.ovh.com","username":"aarents"},"change_message_id":"df3e138ca6b4117fb1422ae563cc16a39cf2ac3c","unresolved":false,"context_lines":[{"line_number":4154,"context_line":"            # is successfull)."},{"line_number":4155,"context_line":"            LOG.warning(\u0027Current disk image is created on top of shelved \u0027"},{"line_number":4156,"context_line":"                        \u0027image and cannot be rebased to original image \u0027"},{"line_number":4157,"context_line":"                        \u0027because no more available in image service, disk \u0027"},{"line_number":4158,"context_line":"                        \u0027will be consequently flattened.\u0027,"},{"line_number":4159,"context_line":"                        instance\u003dinstance)"},{"line_number":4160,"context_line":"            base_backing_fname \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_5c905296","line":4157,"range":{"start_line":4157,"start_character":34,"end_line":4157,"end_character":51},"in_reply_to":"9f560f44_f063f818","updated":"2020-08-13 08:14:33.000000000","message":"Done","commit_id":"d2f640432b2d08944e230886894ec35405acc2c6"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"578ccca434e97bd3424c9eac58144d877c8c0671","unresolved":false,"context_lines":[{"line_number":680,"context_line":"                                       target,"},{"line_number":681,"context_line":"                                       out_format)"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"    def flatten(self):"},{"line_number":684,"context_line":"        target \u003d self.path + \u0027_flatten\u0027"},{"line_number":685,"context_line":"        images.convert_image(self.path, target, \u0027qcow2\u0027, \u0027qcow2\u0027)"},{"line_number":686,"context_line":"        os.rename(target, self.path)"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    @staticmethod"},{"line_number":689,"context_line":"    def is_file_in_instance_path():"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e991a654","line":686,"range":{"start_line":683,"start_character":0,"end_line":686,"end_character":36},"updated":"2019-12-09 14:25:02.000000000","message":"I know we don\u0027t do this for rbd but shouldn\u0027t we optionally rebase on a cached image here to avoid eating up space on the compute?","commit_id":"84b055480f49e3ce3224ce032cd9de3f5dce4fe6"}]}
