Restore libvirt block storage connections on reboot.
Fixes bug 1036902. There are a number of cases where block storage connections are not properly restored, impacting libvirt in particular. The most common case is a VM which has block storage attached via iSCSI, whereby the physical system is rebooted. When the system comes back up and starts nova-compute, the iSCSI connections are NOT recreated for the instances slated to be resumed (assuming resume_guests_state_on_host_boot is set). The patch changes the compute manager to pass block_storage_info via driver.reboot() and driver.resume_state_on_host_boot(). The fix is actually only present in the libvirt driver. However, all the other drivers were updated to accept the additional, optional function arg. With the changes in place, iSCSI connections for libvirt are re-established after a hypervisor reboot with resume_guests_state_on_host_boot=True and on every hard_reboot. The latter is intended so that users have a last ditch option for recovering their VMs without administrative involvement. Change-Id: Idf5d53f21991a359bec6ce26ae9fe3bd61800ce3
This commit is contained in:
@@ -95,7 +95,8 @@ class HyperVDriver(driver.ComputeDriver):
|
||||
self._vmops.spawn(context, instance, image_meta, network_info,
|
||||
block_device_info)
|
||||
|
||||
def reboot(self, instance, network_info, reboot_type):
|
||||
def reboot(self, instance, network_info, reboot_type,
|
||||
block_device_info=None):
|
||||
self._vmops.reboot(instance, network_info, reboot_type)
|
||||
|
||||
def destroy(self, instance, network_info=None, cleanup=True):
|
||||
|
||||
Reference in New Issue
Block a user