This is actually super awkward as locking _disconnect_volume and/or _should_disconnect_target isn't enough here as we are reliant on the compute manager / block device actually deleting the attachments. Anyway here's the current list of places where we call _disconnect_volume in the libvirt virt driver:
This is actually super awkward as locking _disconnect_volume and/or _should_ disconnect_ target isn't enough here as we are reliant on the compute manager / block device actually deleting the attachments. Anyway here's the current list of places where we call _disconnect_volume in the libvirt virt driver:
# egrep '(def\ | self._disconnec t_volume) ' nova/virt/ libvirt/ driver. py | grep -B1 self._disconnec t_volume info=None,
self. _disconnect_ volume( context, connection_info, instance)
self. _disconnect_ volume( context, connection_info, instance, info,
self. _disconnect_ volume( context, new_connection_ info, instance)
self. _disconnect_ volume( context, new_connection_ info, instance)
self._ disconnect_ volume( context, old_connection_ info, instance)
self._ disconnect_ volume( context, connection_info, instance, migration( self, context, instance, block_device_info,
self. _disconnect_ volume( context, connection_info, instance) disk_and_ power_off( self, context, instance, dest,
self. _disconnect_ volume( context, connection_info, instance)
def _cleanup(self, context, instance, network_info, block_device_
--
def attach_volume(self, context, connection_info, instance, mountpoint,
--
def swap_volume(self, context, old_connection_
--
def detach_volume(self, context, connection_info, instance, mountpoint,
--
def post_live_
--
def migrate_