diff --git a/Authors b/Authors index 4d784cae5c6..c429dc3b568 100644 --- a/Authors +++ b/Authors @@ -39,6 +39,7 @@ Cole Robinson Cor Cornelisse Cory Wright Dan Prince +Dan Smith Dan Wendlandt Daniel P. Berrange Dave Lapsley diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py index 24112dab2d9..238ba3ac887 100644 --- a/nova/virt/libvirt/connection.py +++ b/nova/virt/libvirt/connection.py @@ -537,15 +537,17 @@ def attach_volume(self, connection_info, instance_name, mountpoint): try: virt_dom.attachDevice(xml) except Exception, ex: - self.volume_driver_method('disconnect_volume', - connection_info, - mount_device) - if isinstance(ex, libvirt.libvirtError): errcode = ex.get_error_code() if errcode == libvirt.VIR_ERR_OPERATION_FAILED: + self.volume_driver_method('disconnect_volume', + connection_info, + mount_device) raise exception.DeviceIsBusy(device=mount_device) - raise + with utils.save_and_reraise_exception(): + self.volume_driver_method('disconnect_volume', + connection_info, + mount_device) @staticmethod def _get_disk_xml(xml, device):