)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2ce73eacdf0fb02b989ad91a81567e83ab2887ae","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Preserve UEFI NVRAM variable store"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Set NVRAM file for UEFI variable store to the instance folder"},{"line_number":10,"context_line":"CONF.instances_path/\u003cUUID\u003e instead of the default folder"},{"line_number":11,"context_line":"/var/lib/libvirt/qemu/nvram/."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Preserve NVRAM variable store during stop/start, hard reboot, cold"},{"line_number":14,"context_line":"migration, resize and live migration. The NVRAM storage file is copied"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"9fdfeff1_73612fa9","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":29},"updated":"2019-01-29 19:02:16.000000000","message":"Are there cases where having it in the instance folder gets us the desired copying behaviour \"for free\"? Because if not, it might make sense to leave it where it is. (As an aside, for the vTPM case we\u0027re going to have to leave it in the default place because there\u0027s no way to change it.)","commit_id":"5d5797262c01f2ed25ce243544a6e6090e95fbad"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"99baf6fa63994942fa4b9738e5f24262f715c7f5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Preserve UEFI NVRAM variable store"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Set NVRAM file for UEFI variable store to the instance folder"},{"line_number":10,"context_line":"CONF.instances_path/\u003cUUID\u003e instead of the default folder"},{"line_number":11,"context_line":"/var/lib/libvirt/qemu/nvram/."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Preserve NVRAM variable store during stop/start, hard reboot, cold"},{"line_number":14,"context_line":"migration, resize and live migration. The NVRAM storage file is copied"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"9fdfeff1_aebc0e06","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":29},"in_reply_to":"9fdfeff1_73612fa9","updated":"2019-01-29 19:51:51.000000000","message":"\u003e Are there cases where having it in the instance folder gets us the\n \u003e desired copying behaviour \"for free\"? Because if not, it might make\n \u003e sense to leave it where it is. (As an aside, for the vTPM case\n \u003e we\u0027re going to have to leave it in the default place because\n \u003e there\u0027s no way to change it.)\nFor UEFI guests (hw_firmware_type\u003duefi), every time the instance is started, the UEFI variable storage for that instance (/var/lib/libvirt/qemu/nvram/instance-xxxxxxxx_VARS.fd) is deleted and reinitialized from the default template. Change the location to instance folder to avoid this overwrite.\nAdded explanation to commit message.","commit_id":"5d5797262c01f2ed25ce243544a6e6090e95fbad"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d9717297f7437fa850fa47362a7bb082084a56df","unresolved":false,"context_lines":[{"line_number":14,"context_line":"(/var/lib/libvirt/qemu/nvram/instance-xxxxxxxx_VARS.fd) is deleted"},{"line_number":15,"context_line":"and reinitialized from the default template."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This commit sets the location of UEFI NVRAM file to the instance folder"},{"line_number":18,"context_line":"CONF.instances_path/\u003cUUID\u003e instead of the default folder"},{"line_number":19,"context_line":"/var/lib/libvirt/qemu/nvram/ to avoid the overwrite. During cold and"},{"line_number":20,"context_line":"live migrations, the UEFI NVRAM file is copied over to destination host."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-Bug: #1785123"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"3fa7e38b_15d66929","line":19,"range":{"start_line":17,"start_character":0,"end_line":19,"end_character":28},"updated":"2019-09-27 14:17:10.000000000","message":"How are you dealing with upgrades where the nvram file is in the old location? It looks like the code is only checking for the file in the new location (instance path) before trying to copy it.","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"}],"nova/virt/driver.py":[{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"3b0b02ccf4419d40cee1b71a35c4f675da3f0657","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        raise NotImplementedError()"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":332,"context_line":"                destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":333,"context_line":"        \"\"\"Destroy the specified instance from the Hypervisor."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        If the instance is not found (for example if networking failed), this"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_7d11f650","line":332,"range":{"start_line":332,"start_character":52,"end_line":332,"end_character":54},"updated":"2018-12-06 07:25:18.000000000","message":"minor: destroy_nvram is better?","commit_id":"237a35d1bf1e31e39547dc9353c0b6ed5aeb3f26"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ae257ac6d97a76744130e615ee10e91b9f9a0b5a","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        raise NotImplementedError()"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":332,"context_line":"                destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":333,"context_line":"        \"\"\"Destroy the specified instance from the Hypervisor."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        If the instance is not found (for example if networking failed), this"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_ae48af2b","line":332,"range":{"start_line":332,"start_character":52,"end_line":332,"end_character":54},"in_reply_to":"3f79a3b5_7d11f650","updated":"2018-12-06 16:21:53.000000000","message":"keep_nvram is used here to be consistent with libvirt terminology:\nif keep_nvram:\n  flags |\u003d libvirt.VIR_DOMAIN_UNDEFINE_KEEP_NVRAM","commit_id":"237a35d1bf1e31e39547dc9353c0b6ed5aeb3f26"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"3b0b02ccf4419d40cee1b71a35c4f675da3f0657","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def cleanup(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":350,"context_line":"                destroy_disks\u003dTrue, migrate_data\u003dNone, destroy_vifs\u003dTrue,"},{"line_number":351,"context_line":"                keep_nvram\u003dFalse):"},{"line_number":352,"context_line":"        \"\"\"Cleanup the instance resources ."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        Instance should have been destroyed from the Hypervisor before calling"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_1d1c8263","line":351,"range":{"start_line":351,"start_character":32,"end_line":351,"end_character":34},"updated":"2018-12-06 07:25:18.000000000","message":"minor: destroy_nvram is better?","commit_id":"237a35d1bf1e31e39547dc9353c0b6ed5aeb3f26"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea8acfe88160cf670c896c15165e3af9ae6a8270","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        raise NotImplementedError()"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":376,"context_line":"                destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":377,"context_line":"        \"\"\"Destroy the specified instance from the Hypervisor."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        If the instance is not found (for example if networking failed), this"}],"source_content_type":"text/x-python","patch_set":28,"id":"3fa7e38b_23aa5218","line":376,"updated":"2019-09-27 14:14:41.000000000","message":"Do we really need the signature change here and below? Can\u0027t we determine from the instance image meta if it\u0027s using nvram and the context of the operation being performed on the instance to determine if we should retain it or not?\n\nAlternatively, are there any cases where destroy_disks and keep_nvram would have different values? IOW, can we just rely on destroy_disks?\n\nActually, after looking at the driver code, nothing outside the driver, like the ComputeManager, even calls these methods and sets keep_nvram\u003dTrue so what is the point?","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"f32c6a0bfc0ce8fbcf21626a5d51b591e5ea4d06","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"        _sync_remove_cache_entry()"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"    def destroy(self, context, instance, network_info,"},{"line_number":1357,"context_line":"                block_device_info\u003dNone, destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":1358,"context_line":"        \"\"\"Destroy the specified instance, if it can be found."},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"        :param context: The security context."}],"source_content_type":"text/x-python","patch_set":28,"id":"3fa7e38b_3d4bd82b","line":1357,"range":{"start_line":1357,"start_character":60,"end_line":1357,"end_character":76},"updated":"2019-09-23 04:59:40.000000000","message":"nit: update in func comments","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea8acfe88160cf670c896c15165e3af9ae6a8270","unresolved":false,"context_lines":[{"line_number":2619,"context_line":"                loader.set(\"type\", \"pflash\")"},{"line_number":2620,"context_line":"                loader.set(\"readonly\", \"yes\")"},{"line_number":2621,"context_line":"                os.append(loader)"},{"line_number":2622,"context_line":"                nvram \u003d self._text_node(\"nvram\", self.os_nvram)"},{"line_number":2623,"context_line":"                os.append(nvram)"},{"line_number":2624,"context_line":"            else:"},{"line_number":2625,"context_line":"                os.append(self._text_node(\"loader\", self.os_loader))"}],"source_content_type":"text/x-python","patch_set":28,"id":"3fa7e38b_63792ac6","line":2622,"updated":"2019-09-27 14:14:41.000000000","message":"What is this needed for?\n\nAlso, where is this tested?","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4a6762be3d38b8dcd7237c5398cd9a3256f3d541","unresolved":false,"context_lines":[{"line_number":7130,"context_line":"                on_completion \u003d lambda process: \\"},{"line_number":7131,"context_line":"                    self.job_tracker.remove_job(instance, process.pid)"},{"line_number":7132,"context_line":"                LOG.info(\"Moving the UEFI variable store file %s\", nvram_file)"},{"line_number":7133,"context_line":"                libvirt_utils.copy_image(nvram_file,"},{"line_number":7134,"context_line":"                                         inst_base,"},{"line_number":7135,"context_line":"                                         host\u003ddest, on_execute\u003don_execute,"},{"line_number":7136,"context_line":"                                         on_completion\u003don_completion)"},{"line_number":7137,"context_line":""},{"line_number":7138,"context_line":"            new_xml_str \u003d None"},{"line_number":7139,"context_line":"            if CONF.libvirt.virt_type !\u003d \"parallels\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_744f2f8d","line":7136,"range":{"start_line":7133,"start_character":15,"end_line":7136,"end_character":69},"updated":"2018-12-13 22:06:28.000000000","message":"I think this means we now need rsync/ssh to work between compute nodes for live migration...not sure that was needed before.\n\nIf it is new, this would maybe be worth a release note.","commit_id":"0d44f6baf5dacf7d555b18725d55595e7da8899c"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"3413b9424c8ce542d2056a1f62ceef0a83cadc3b","unresolved":false,"context_lines":[{"line_number":7130,"context_line":"                on_completion \u003d lambda process: \\"},{"line_number":7131,"context_line":"                    self.job_tracker.remove_job(instance, process.pid)"},{"line_number":7132,"context_line":"                LOG.info(\"Moving the UEFI variable store file %s\", nvram_file)"},{"line_number":7133,"context_line":"                libvirt_utils.copy_image(nvram_file,"},{"line_number":7134,"context_line":"                                         inst_base,"},{"line_number":7135,"context_line":"                                         host\u003ddest, on_execute\u003don_execute,"},{"line_number":7136,"context_line":"                                         on_completion\u003don_completion)"},{"line_number":7137,"context_line":""},{"line_number":7138,"context_line":"            new_xml_str \u003d None"},{"line_number":7139,"context_line":"            if CONF.libvirt.virt_type !\u003d \"parallels\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_3e1f096f","line":7136,"range":{"start_line":7133,"start_character":15,"end_line":7136,"end_character":69},"in_reply_to":"3f79a3b5_744f2f8d","updated":"2018-12-18 17:03:20.000000000","message":"Added","commit_id":"0d44f6baf5dacf7d555b18725d55595e7da8899c"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"357cce1caac003fb9e3f4a7cdb3ee69a99b01f89","unresolved":false,"context_lines":[{"line_number":7124,"context_line":""},{"line_number":7125,"context_line":"            # Migrate UEFI variable store file"},{"line_number":7126,"context_line":"            inst_base \u003d libvirt_utils.get_instance_path(instance)"},{"line_number":7127,"context_line":"            nvram_file \u003d \"%s/%s_VARS.fd\" % (inst_base, instance.name)"},{"line_number":7128,"context_line":"            if os.path.exists(nvram_file):"},{"line_number":7129,"context_line":"                on_execute \u003d lambda process: \\"},{"line_number":7130,"context_line":"                    self.job_tracker.add_job(instance, process.pid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_ee60d5a1","line":7127,"updated":"2018-12-20 13:02:49.000000000","message":"%s/%s_VARS.fd repeats three times. I think it worth to make it as variable or function.","commit_id":"2eb80f59306a6daa3a10a31ddef26745d840c588"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"a99c5f7b63be1c698b3abe221600664cd47cb486","unresolved":false,"context_lines":[{"line_number":7124,"context_line":""},{"line_number":7125,"context_line":"            # Migrate UEFI variable store file"},{"line_number":7126,"context_line":"            inst_base \u003d libvirt_utils.get_instance_path(instance)"},{"line_number":7127,"context_line":"            nvram_file \u003d \"%s/%s_VARS.fd\" % (inst_base, instance.name)"},{"line_number":7128,"context_line":"            if os.path.exists(nvram_file):"},{"line_number":7129,"context_line":"                on_execute \u003d lambda process: \\"},{"line_number":7130,"context_line":"                    self.job_tracker.add_job(instance, process.pid)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_deca4ba1","line":7127,"in_reply_to":"3f79a3b5_ee60d5a1","updated":"2018-12-21 17:59:01.000000000","message":"Done","commit_id":"2eb80f59306a6daa3a10a31ddef26745d840c588"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"357cce1caac003fb9e3f4a7cdb3ee69a99b01f89","unresolved":false,"context_lines":[{"line_number":8383,"context_line":"                                         dst_disk_info_path,"},{"line_number":8384,"context_line":"                                         host\u003ddest, on_execute\u003don_execute,"},{"line_number":8385,"context_line":"                                         on_completion\u003don_completion)"},{"line_number":8386,"context_line":"            # Migrate UEFI variable store file"},{"line_number":8387,"context_line":"            nvram_file \u003d \"%s/%s_VARS.fd\" % (inst_base_resize, instance.name)"},{"line_number":8388,"context_line":"            if os.path.exists(nvram_file):"},{"line_number":8389,"context_line":"                LOG.info(\"Moving the UEFI variable store file %s\", nvram_file)"},{"line_number":8390,"context_line":"                libvirt_utils.copy_image(nvram_file,"},{"line_number":8391,"context_line":"                                         inst_base,"},{"line_number":8392,"context_line":"                                         host\u003ddest, on_execute\u003don_execute,"},{"line_number":8393,"context_line":"                                         on_completion\u003don_completion)"},{"line_number":8394,"context_line":""},{"line_number":8395,"context_line":"        except Exception:"},{"line_number":8396,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_ce2ab92c","line":8393,"range":{"start_line":8386,"start_character":0,"end_line":8393,"end_character":69},"updated":"2018-12-20 13:02:49.000000000","message":"Looks like a lot of duplication with code above. Is it possible to make separate function?","commit_id":"2eb80f59306a6daa3a10a31ddef26745d840c588"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"a99c5f7b63be1c698b3abe221600664cd47cb486","unresolved":false,"context_lines":[{"line_number":8383,"context_line":"                                         dst_disk_info_path,"},{"line_number":8384,"context_line":"                                         host\u003ddest, on_execute\u003don_execute,"},{"line_number":8385,"context_line":"                                         on_completion\u003don_completion)"},{"line_number":8386,"context_line":"            # Migrate UEFI variable store file"},{"line_number":8387,"context_line":"            nvram_file \u003d \"%s/%s_VARS.fd\" % (inst_base_resize, instance.name)"},{"line_number":8388,"context_line":"            if os.path.exists(nvram_file):"},{"line_number":8389,"context_line":"                LOG.info(\"Moving the UEFI variable store file %s\", nvram_file)"},{"line_number":8390,"context_line":"                libvirt_utils.copy_image(nvram_file,"},{"line_number":8391,"context_line":"                                         inst_base,"},{"line_number":8392,"context_line":"                                         host\u003ddest, on_execute\u003don_execute,"},{"line_number":8393,"context_line":"                                         on_completion\u003don_completion)"},{"line_number":8394,"context_line":""},{"line_number":8395,"context_line":"        except Exception:"},{"line_number":8396,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_3ed6df52","line":8393,"range":{"start_line":8386,"start_character":0,"end_line":8393,"end_character":69},"in_reply_to":"3f79a3b5_ce2ab92c","updated":"2018-12-21 17:59:01.000000000","message":"Done","commit_id":"2eb80f59306a6daa3a10a31ddef26745d840c588"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"df3d7bed6ebc6a563c3d4cb65da123a9de3a5298","unresolved":false,"context_lines":[{"line_number":7192,"context_line":"            # Migrate UEFI variable store file"},{"line_number":7193,"context_line":"            inst_base \u003d libvirt_utils.get_instance_path(instance)"},{"line_number":7194,"context_line":"            nvram_file \u003d self._get_nvram_path(inst_base, instance.name)"},{"line_number":7195,"context_line":"            on_execute \u003d lambda process: \\"},{"line_number":7196,"context_line":"                self.job_tracker.add_job(instance, process.pid)"},{"line_number":7197,"context_line":"            on_completion \u003d lambda process: \\"},{"line_number":7198,"context_line":"                self.job_tracker.remove_job(instance, process.pid)"},{"line_number":7199,"context_line":"            self._copy_nvram_file(nvram_file, inst_base, dest, on_execute,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fdfeff1_903c89e1","line":7196,"range":{"start_line":7195,"start_character":25,"end_line":7196,"end_character":63},"updated":"2019-02-01 18:13:03.000000000","message":"nit:\n(lambda process: \n                self.job_tracker.add_job(instance, process.pid))","commit_id":"d922365f8efa5e70040a82844df424899400cf61"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d088d13c607f8ba6baa3f83e41d0f092c31a7c21","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"                self._teardown_container(instance)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":1099,"context_line":"                destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":1100,"context_line":"        self._destroy(instance)"},{"line_number":1101,"context_line":"        self.cleanup(context, instance, network_info, block_device_info,"},{"line_number":1102,"context_line":"                     destroy_disks, keep_nvram\u003dkeep_nvram)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_5be03dcd","line":1099,"range":{"start_line":1099,"start_character":36,"end_line":1099,"end_character":52},"updated":"2019-08-09 09:53:25.000000000","message":"I\u0027m not sure we need this parameter. We can just set keep_nvram for guest.delete_configration by the destory_disks.\n\nI also check the confirm resize and revert resize. It will call the driver.destroy to destroy the instance on src or dest node. But both of them we pass the keep_nvram\u003dFalse, not sure will it be a problem when it is shared storage. \n\nIf we use one destroy_disks parameter, then both confirm and revert resize will works correctly.","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0440b50368a637d315e930e689187ec473861a96","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"                self._teardown_container(instance)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":1099,"context_line":"                destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":1100,"context_line":"        self._destroy(instance)"},{"line_number":1101,"context_line":"        self.cleanup(context, instance, network_info, block_device_info,"},{"line_number":1102,"context_line":"                     destroy_disks, keep_nvram\u003dkeep_nvram)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_5549a4b4","line":1099,"range":{"start_line":1099,"start_character":36,"end_line":1099,"end_character":52},"in_reply_to":"7faddb67_1b37f34f","updated":"2019-08-14 08:09:59.000000000","message":"What this patch doing is about moving the file location https://review.opendev.org/#/c/621646/23//COMMIT_MSG@17...","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":28706,"name":"Boxiang Zhu","email":"bxzhu_5355@163.com","username":"ZhuBoxiang"},"change_message_id":"50c7d51d10d4091a2546ae38fc9f6fad8b9b0762","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"                self._teardown_container(instance)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":1099,"context_line":"                destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":1100,"context_line":"        self._destroy(instance)"},{"line_number":1101,"context_line":"        self.cleanup(context, instance, network_info, block_device_info,"},{"line_number":1102,"context_line":"                     destroy_disks, keep_nvram\u003dkeep_nvram)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_82232058","line":1099,"range":{"start_line":1099,"start_character":36,"end_line":1099,"end_character":52},"in_reply_to":"7faddb67_5549a4b4","updated":"2019-08-19 03:03:36.000000000","message":"@alex, thanks for your review. Yeah, we have move the file location. So now, we check whether the instance is under the shared storage https://review.opendev.org/#/c/621646/26/nova/virt/libvirt/driver.py@7764","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":30451,"name":"ZHOU YAO","email":"zhou.yao@99cloud.net","username":"zhouyao"},"change_message_id":"d66d71597bac8af7aa620063348c1bf3612b194b","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"                self._teardown_container(instance)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":1099,"context_line":"                destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":1100,"context_line":"        self._destroy(instance)"},{"line_number":1101,"context_line":"        self.cleanup(context, instance, network_info, block_device_info,"},{"line_number":1102,"context_line":"                     destroy_disks, keep_nvram\u003dkeep_nvram)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_1b37f34f","line":1099,"range":{"start_line":1099,"start_character":36,"end_line":1099,"end_character":52},"in_reply_to":"7faddb67_5be03dcd","updated":"2019-08-14 01:17:36.000000000","message":"I think the nvram file stored in \"/var/lib/libvirt/qemu/nvram/instance-xxxxxxxx_VARS.fd\" won\u0027t use shared storage.(It is only a libvirt matter)","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6d3d0cb7013d10d4966cdddc0501cf5d187b6445","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"                self._teardown_container(instance)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"    def destroy(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":1099,"context_line":"                destroy_disks\u003dTrue, keep_nvram\u003dFalse):"},{"line_number":1100,"context_line":"        self._destroy(instance)"},{"line_number":1101,"context_line":"        self.cleanup(context, instance, network_info, block_device_info,"},{"line_number":1102,"context_line":"                     destroy_disks, keep_nvram\u003dkeep_nvram)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_cf6e6ec8","line":1099,"range":{"start_line":1099,"start_character":36,"end_line":1099,"end_character":52},"in_reply_to":"7faddb67_5be03dcd","updated":"2019-09-04 15:27:23.000000000","message":"Yes, I think this would make sense.","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d088d13c607f8ba6baa3f83e41d0f092c31a7c21","unresolved":false,"context_lines":[{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1211,"context_line":"                                                        \u00270\u0027))"},{"line_number":1212,"context_line":"            success \u003d self.delete_instance_files(instance)"},{"line_number":1213,"context_line":"            # NOTE(mriedem): This is used in the _run_pending_deletes periodic"},{"line_number":1214,"context_line":"            # task in the compute manager. The tight coupling is not great..."},{"line_number":1215,"context_line":"            instance.system_metadata[\u0027clean_attempts\u0027] \u003d str(attempts + 1)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_5b8d9d2f","line":1212,"range":{"start_line":1212,"start_character":27,"end_line":1212,"end_character":48},"updated":"2019-08-09 09:53:25.000000000","message":"if destroy_disk \u003d\u003d true and keep_nvram\u003dTrue, then nvram still can be removed at here since the whole instance dir is removed..","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6d3d0cb7013d10d4966cdddc0501cf5d187b6445","unresolved":false,"context_lines":[{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"            attempts \u003d int(instance.system_metadata.get(\u0027clean_attempts\u0027,"},{"line_number":1211,"context_line":"                                                        \u00270\u0027))"},{"line_number":1212,"context_line":"            success \u003d self.delete_instance_files(instance)"},{"line_number":1213,"context_line":"            # NOTE(mriedem): This is used in the _run_pending_deletes periodic"},{"line_number":1214,"context_line":"            # task in the compute manager. The tight coupling is not great..."},{"line_number":1215,"context_line":"            instance.system_metadata[\u0027clean_attempts\u0027] \u003d str(attempts + 1)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_4f491e5e","line":1212,"range":{"start_line":1212,"start_character":27,"end_line":1212,"end_character":48},"in_reply_to":"7faddb67_5b8d9d2f","updated":"2019-09-04 15:27:23.000000000","message":"agreed","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ca7b84fe4a3cd2d801064c37c21b8881c58217ec","unresolved":false,"context_lines":[{"line_number":7705,"context_line":"                         on_completion):"},{"line_number":7706,"context_line":"        if os.path.exists(nvram_file):"},{"line_number":7707,"context_line":"            LOG.info(\"Moving the UEFI variable store file %s\", nvram_file)"},{"line_number":7708,"context_line":"            libvirt_utils.copy_image(nvram_file,"},{"line_number":7709,"context_line":"                                     inst_base,"},{"line_number":7710,"context_line":"                                     host\u003ddest, on_execute\u003don_execute,"},{"line_number":7711,"context_line":"                                     on_completion\u003don_completion)"},{"line_number":7712,"context_line":""},{"line_number":7713,"context_line":"    def _live_migration_operation(self, context, instance, dest,"},{"line_number":7714,"context_line":"                                  block_migration, migrate_data, guest,"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_db674d51","line":7711,"range":{"start_line":7708,"start_character":12,"end_line":7711,"end_character":65},"updated":"2019-08-09 10:01:57.000000000","message":"we shouldn\u0027t copy the nvram when the dest is None, see the line 9018","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cf98faa1dbc748caddf45d99eb698a909bbf6364","unresolved":false,"context_lines":[{"line_number":7705,"context_line":"                         on_completion):"},{"line_number":7706,"context_line":"        if os.path.exists(nvram_file):"},{"line_number":7707,"context_line":"            LOG.info(\"Moving the UEFI variable store file %s\", nvram_file)"},{"line_number":7708,"context_line":"            libvirt_utils.copy_image(nvram_file,"},{"line_number":7709,"context_line":"                                     inst_base,"},{"line_number":7710,"context_line":"                                     host\u003ddest, on_execute\u003don_execute,"},{"line_number":7711,"context_line":"                                     on_completion\u003don_completion)"},{"line_number":7712,"context_line":""},{"line_number":7713,"context_line":"    def _live_migration_operation(self, context, instance, dest,"},{"line_number":7714,"context_line":"                                  block_migration, migrate_data, guest,"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_bb01313c","line":7711,"range":{"start_line":7708,"start_character":12,"end_line":7711,"end_character":65},"in_reply_to":"7faddb67_db674d51","updated":"2019-08-09 10:04:42.000000000","message":"oops, sorry, the libvirt_utils.copy_image will take care the when the host\u003dNone.","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cf98faa1dbc748caddf45d99eb698a909bbf6364","unresolved":false,"context_lines":[{"line_number":7756,"context_line":"                    libvirt.VIR_MIGRATE_TUNNELLED \u003d\u003d 0):"},{"line_number":7757,"context_line":"                    migrate_uri \u003d self._migrate_uri(dest)"},{"line_number":7758,"context_line":""},{"line_number":7759,"context_line":"            # Migrate UEFI variable store file"},{"line_number":7760,"context_line":"            inst_base \u003d libvirt_utils.get_instance_path(instance)"},{"line_number":7761,"context_line":"            nvram_file \u003d self._get_nvram_path(inst_base, instance.name)"},{"line_number":7762,"context_line":"            on_execute \u003d lambda process: \\"},{"line_number":7763,"context_line":"                self.job_tracker.add_job(instance, process.pid)"},{"line_number":7764,"context_line":"            on_completion \u003d lambda process: \\"},{"line_number":7765,"context_line":"                self.job_tracker.remove_job(instance, process.pid)"},{"line_number":7766,"context_line":"            self._copy_nvram_file(nvram_file, inst_base, dest, on_execute,"},{"line_number":7767,"context_line":"                                  on_completion)"},{"line_number":7768,"context_line":""},{"line_number":7769,"context_line":"            new_xml_str \u003d None"},{"line_number":7770,"context_line":"            if CONF.libvirt.virt_type !\u003d \"parallels\":"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_1bd405bd","line":7767,"range":{"start_line":7759,"start_character":12,"end_line":7767,"end_character":48},"updated":"2019-08-09 10:04:42.000000000","message":"we should take care of shared storage for live migration","commit_id":"0f75e801a15e860b5278a22496fe42ffb7f530d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea8acfe88160cf670c896c15165e3af9ae6a8270","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":2,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"# Copyright (c) 2010 Citrix Systems, Inc."}],"source_content_type":"text/x-python","patch_set":28,"id":"3fa7e38b_15798992","line":1,"updated":"2019-09-27 14:14:41.000000000","message":"As far as I can tell, none of the new logic in this module is even tested. You\u0027ve updated the libvirt.test_driver module but only to make things pass, not to actually assert any of the new logic.","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"f32c6a0bfc0ce8fbcf21626a5d51b591e5ea4d06","unresolved":false,"context_lines":[{"line_number":8337,"context_line":"            on_completion \u003d lambda process: \\"},{"line_number":8338,"context_line":"                self.job_tracker.remove_job(instance, process.pid)"},{"line_number":8339,"context_line":""},{"line_number":8340,"context_line":"            inst_base \u003d libvirt_utils.get_instance_path(instance)"},{"line_number":8341,"context_line":"            shared_storage \u003d self._is_storage_shared_with(dest, inst_base)"},{"line_number":8342,"context_line":"            if not shared_storage:"},{"line_number":8343,"context_line":"                self._copy_nvram_file(nvram_file, inst_base, dest, on_execute,"}],"source_content_type":"text/x-python","patch_set":28,"id":"3fa7e38b_7d7e306c","line":8340,"range":{"start_line":8340,"start_character":12,"end_line":8340,"end_character":65},"updated":"2019-09-23 04:59:40.000000000","message":"nit: this line can be removed","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea8acfe88160cf670c896c15165e3af9ae6a8270","unresolved":false,"context_lines":[{"line_number":8338,"context_line":"                self.job_tracker.remove_job(instance, process.pid)"},{"line_number":8339,"context_line":""},{"line_number":8340,"context_line":"            inst_base \u003d libvirt_utils.get_instance_path(instance)"},{"line_number":8341,"context_line":"            shared_storage \u003d self._is_storage_shared_with(dest, inst_base)"},{"line_number":8342,"context_line":"            if not shared_storage:"},{"line_number":8343,"context_line":"                self._copy_nvram_file(nvram_file, inst_base, dest, on_execute,"},{"line_number":8344,"context_line":"                                      on_completion)"}],"source_content_type":"text/x-python","patch_set":28,"id":"3fa7e38b_830b0628","line":8341,"range":{"start_line":8341,"start_character":34,"end_line":8341,"end_character":57},"updated":"2019-09-27 14:14:41.000000000","message":"Can\u0027t we just look at migrate_data.is_shared_instance_path for this? For one thing that method is kind of heavy, and the other is there are existing bugs against it since it assumes that if you\u0027re using the rbd image backend you\u0027re using shared storage for the instance path, which isn\u0027t necessarily true, it just means you\u0027re using a ceph pool for images. For example, see the warning on this workaround option:\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#workarounds.ensure_libvirt_rbd_instance_dir_cleanup","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"}],"nova/virt/libvirt/guest.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"357cce1caac003fb9e3f4a7cdb3ee69a99b01f89","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            flags \u003d libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE"},{"line_number":265,"context_line":"            if support_uefi:"},{"line_number":266,"context_line":"                if keep_nvram:"},{"line_number":267,"context_line":"                    flags |\u003d libvirt.VIR_DOMAIN_UNDEFINE_KEEP_NVRAM"},{"line_number":268,"context_line":"                else:"},{"line_number":269,"context_line":"                    flags |\u003d libvirt.VIR_DOMAIN_UNDEFINE_NVRAM"},{"line_number":270,"context_line":"            self._domain.undefineFlags(flags)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_2e4d6dc5","line":267,"range":{"start_line":267,"start_character":19,"end_line":267,"end_character":67},"updated":"2018-12-20 13:02:49.000000000","message":"We\u0027re keeping nvram for swap_volume, live_snapshot and hard_reboot, right? Could explain a little how it works and why those operations?","commit_id":"2eb80f59306a6daa3a10a31ddef26745d840c588"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"6861321c0d8c4e4a12e2417913c3c07e63ed7cba","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            flags \u003d libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE"},{"line_number":265,"context_line":"            if support_uefi:"},{"line_number":266,"context_line":"                if keep_nvram:"},{"line_number":267,"context_line":"                    flags |\u003d libvirt.VIR_DOMAIN_UNDEFINE_KEEP_NVRAM"},{"line_number":268,"context_line":"                else:"},{"line_number":269,"context_line":"                    flags |\u003d libvirt.VIR_DOMAIN_UNDEFINE_NVRAM"},{"line_number":270,"context_line":"            self._domain.undefineFlags(flags)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_2ffb2749","line":267,"range":{"start_line":267,"start_character":19,"end_line":267,"end_character":67},"in_reply_to":"3f79a3b5_2e4d6dc5","updated":"2018-12-21 17:09:14.000000000","message":"\u003e We\u0027re keeping nvram for swap_volume, live_snapshot and hard_reboot,\n \u003e right? Could explain a little how it works and why those\n \u003e operations?\n\nWe are keeping nvrams for basically any state-preserving operations: stop/start, live/cold migrations, hard-reboots.","commit_id":"2eb80f59306a6daa3a10a31ddef26745d840c588"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d2030a1bed5c825d0b768e105aadab2d035f3d32","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            flags \u003d libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE"},{"line_number":265,"context_line":"            if support_uefi:"},{"line_number":266,"context_line":"                if keep_nvram:"},{"line_number":267,"context_line":"                    flags |\u003d libvirt.VIR_DOMAIN_UNDEFINE_KEEP_NVRAM"},{"line_number":268,"context_line":"                else:"},{"line_number":269,"context_line":"                    flags |\u003d libvirt.VIR_DOMAIN_UNDEFINE_NVRAM"},{"line_number":270,"context_line":"            self._domain.undefineFlags(flags)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_b81a0616","line":267,"range":{"start_line":267,"start_character":19,"end_line":267,"end_character":67},"in_reply_to":"3f79a3b5_2e4d6dc5","updated":"2018-12-21 16:53:23.000000000","message":"We would also keep nvram when powering off an instance, rebooting an instance, shutting down in preparation for cold migration/resize, etc.\n\nBasically we only want to delete the NVRAM file after the instance is no longer present on the given compute node.","commit_id":"2eb80f59306a6daa3a10a31ddef26745d840c588"}],"releasenotes/notes/preserve-uefi-nvram-300dad6f2a63a70d.yaml":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"357cce1caac003fb9e3f4a7cdb3ee69a99b01f89","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"critical:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Live migration of UEFI booted instances now requires sync/ssh to work"},{"line_number":5,"context_line":"    between compute nodes."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_a39756e9","line":4,"range":{"start_line":4,"start_character":57,"end_line":4,"end_character":61},"updated":"2018-12-20 13:02:49.000000000","message":"rsync?","commit_id":"2eb80f59306a6daa3a10a31ddef26745d840c588"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5483a0989bafa98efe49f4da2ee377249f0edd62","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"critical:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Live migration of UEFI booted instances now requires sync/ssh to work"},{"line_number":5,"context_line":"    between compute nodes."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"9fdfeff1_2c9cf3be","line":5,"range":{"start_line":2,"start_character":0,"end_line":5,"end_character":26},"updated":"2019-01-24 18:07:56.000000000","message":"this seams like it should be an upgrade impact\n\nalso can you expand on what this means.","commit_id":"63493a6577dbae2f2311bf65e93f54ea369b6707"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"96b409f062f0da17f5192a347776f0bf1ca018de","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"critical:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Live migration of UEFI booted instances now requires sync/ssh to work"},{"line_number":5,"context_line":"    between compute nodes."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"9fdfeff1_8cc5df5d","line":5,"range":{"start_line":2,"start_character":0,"end_line":5,"end_character":26},"in_reply_to":"9fdfeff1_2c9cf3be","updated":"2019-01-24 18:29:58.000000000","message":"\u003e this seams like it should be an upgrade impact\n \u003e \n \u003e also can you expand on what this means.\n\nAdded explanation.","commit_id":"63493a6577dbae2f2311bf65e93f54ea369b6707"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c7fc6b906e4f05effdf897c04b4140822cf931f5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"critical:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. This new operation requires sync/ssh"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9fdfeff1_8ca87f77","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":8},"updated":"2019-01-24 18:35:23.000000000","message":"also this should be called out as an upgrade impact.\n\nperhaps it should be in both sections but it is definetly an upgrade impact if you need to install or connfiturie something on the host to allow the file to be copied.","commit_id":"304a22cbb19c36418f22911f78cc33a84ba9f064"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"a7e2b13e8c6ee31f9efef9f7950f62e04666512c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"critical:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. This new operation requires sync/ssh"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9fdfeff1_17e1f8fe","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":8},"in_reply_to":"9fdfeff1_8ca87f77","updated":"2019-01-24 19:39:48.000000000","message":"changed to upgrade","commit_id":"304a22cbb19c36418f22911f78cc33a84ba9f064"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c7fc6b906e4f05effdf897c04b4140822cf931f5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"critical:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. This new operation requires sync/ssh"},{"line_number":6,"context_line":"    to work between compute nodes. "},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9fdfeff1_8c739f4d","line":5,"range":{"start_line":5,"start_character":64,"end_line":5,"end_character":72},"updated":"2019-01-24 18:35:23.000000000","message":"can you expand on this.\ndo you need ssh or will this be copied over the libvirt connect.\n\ne.g. if you use the native tls supprot for libvirt/qemu for migrating your instance do you also need to exchnage ssh keys.\n\n\nin this context what does sync refer too.","commit_id":"304a22cbb19c36418f22911f78cc33a84ba9f064"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"a7e2b13e8c6ee31f9efef9f7950f62e04666512c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"critical:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. This new operation requires sync/ssh"},{"line_number":6,"context_line":"    to work between compute nodes. "},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9fdfeff1_779f245f","line":5,"range":{"start_line":5,"start_character":64,"end_line":5,"end_character":72},"in_reply_to":"9fdfeff1_8c739f4d","updated":"2019-01-24 19:39:48.000000000","message":"sorry I meant rsync, not sync.","commit_id":"304a22cbb19c36418f22911f78cc33a84ba9f064"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c7fc6b906e4f05effdf897c04b4140822cf931f5","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. This new operation requires sync/ssh"},{"line_number":6,"context_line":"    to work between compute nodes. "},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9fdfeff1_ec990b6e","line":6,"range":{"start_line":6,"start_character":34,"end_line":6,"end_character":35},"updated":"2019-01-24 18:35:23.000000000","message":"nit:whitespace","commit_id":"304a22cbb19c36418f22911f78cc33a84ba9f064"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"a7e2b13e8c6ee31f9efef9f7950f62e04666512c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. This new operation requires sync/ssh"},{"line_number":6,"context_line":"    to work between compute nodes. "},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9fdfeff1_57930050","line":6,"range":{"start_line":6,"start_character":34,"end_line":6,"end_character":35},"in_reply_to":"9fdfeff1_ec990b6e","updated":"2019-01-24 19:39:48.000000000","message":"Done","commit_id":"304a22cbb19c36418f22911f78cc33a84ba9f064"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2ce73eacdf0fb02b989ad91a81567e83ab2887ae","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. Depends on what libvirt transportion"},{"line_number":6,"context_line":"    method is provisioned by CONF.libvirt.remote_filesystem_transport (default"},{"line_number":7,"context_line":"    to ssh), this new operation requires either ssh and/or rsync to work"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9fdfeff1_5343cb13","line":4,"range":{"start_line":4,"start_character":27,"end_line":4,"end_character":37},"updated":"2019-01-29 19:02:16.000000000","message":"should be \"the UEFI NVRAM file\"","commit_id":"5d5797262c01f2ed25ce243544a6e6090e95fbad"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"99baf6fa63994942fa4b9738e5f24262f715c7f5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. Depends on what libvirt transportion"},{"line_number":6,"context_line":"    method is provisioned by CONF.libvirt.remote_filesystem_transport (default"},{"line_number":7,"context_line":"    to ssh), this new operation requires either ssh and/or rsync to work"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9fdfeff1_f3251fc3","line":4,"range":{"start_line":4,"start_character":27,"end_line":4,"end_character":37},"in_reply_to":"9fdfeff1_5343cb13","updated":"2019-01-29 19:51:51.000000000","message":"Done","commit_id":"5d5797262c01f2ed25ce243544a6e6090e95fbad"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2ce73eacdf0fb02b989ad91a81567e83ab2887ae","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. Depends on what libvirt transportion"},{"line_number":6,"context_line":"    method is provisioned by CONF.libvirt.remote_filesystem_transport (default"},{"line_number":7,"context_line":"    to ssh), this new operation requires either ssh and/or rsync to work"},{"line_number":8,"context_line":"    between compute nodes."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9fdfeff1_b351d7db","line":5,"range":{"start_line":5,"start_character":36,"end_line":5,"end_character":43},"updated":"2019-01-29 19:02:16.000000000","message":"should be \"Depending\"","commit_id":"5d5797262c01f2ed25ce243544a6e6090e95fbad"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"99baf6fa63994942fa4b9738e5f24262f715c7f5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    During live migration, nvram file is copied from source to destination"},{"line_number":5,"context_line":"    host for UEFI booted instances. Depends on what libvirt transportion"},{"line_number":6,"context_line":"    method is provisioned by CONF.libvirt.remote_filesystem_transport (default"},{"line_number":7,"context_line":"    to ssh), this new operation requires either ssh and/or rsync to work"},{"line_number":8,"context_line":"    between compute nodes."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9fdfeff1_132303bf","line":5,"range":{"start_line":5,"start_character":36,"end_line":5,"end_character":43},"in_reply_to":"9fdfeff1_b351d7db","updated":"2019-01-29 19:51:51.000000000","message":"Done","commit_id":"5d5797262c01f2ed25ce243544a6e6090e95fbad"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea8acfe88160cf670c896c15165e3af9ae6a8270","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    During live migration, the UEFI NVRAM file is copied from source to"},{"line_number":5,"context_line":"    destination host for UEFI booted instances. Depending on what libvirt"},{"line_number":6,"context_line":"    transportion method is provisioned by"},{"line_number":7,"context_line":"    CONF.libvirt.remote_filesystem_transport (default to ssh), this new"},{"line_number":8,"context_line":"    operation requires either ssh and/or rsync to work between compute nodes."}],"source_content_type":"text/x-yaml","patch_set":28,"id":"3fa7e38b_5562a1d9","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":9},"updated":"2019-09-27 14:14:41.000000000","message":"This is code speak, not for external docs, use:\n\n``[libvirt]/remote_filesystem_transport``","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea8acfe88160cf670c896c15165e3af9ae6a8270","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    destination host for UEFI booted instances. Depending on what libvirt"},{"line_number":6,"context_line":"    transportion method is provisioned by"},{"line_number":7,"context_line":"    CONF.libvirt.remote_filesystem_transport (default to ssh), this new"},{"line_number":8,"context_line":"    operation requires either ssh and/or rsync to work between compute nodes."}],"source_content_type":"text/x-yaml","patch_set":28,"id":"3fa7e38b_b5951589","line":8,"updated":"2019-09-27 14:14:41.000000000","message":"Well, or if you\u0027re using shared storage for the instance path, right?","commit_id":"5dc094af4830e842f62f8ff341bf9edf7e59a8af"}]}
