Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Cloud:OpenStack:Juno:Staging
openstack-nova
nova_disconnect_volume_multipath_fc.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nova_disconnect_volume_multipath_fc.patch of Package openstack-nova
Index: nova-2014.2.4.dev84/nova/virt/libvirt/volume.py =================================================================== --- nova-2014.2.4.dev84.orig/nova/virt/libvirt/volume.py +++ nova-2014.2.4.dev84/nova/virt/libvirt/volume.py @@ -1015,11 +1015,8 @@ class LibvirtFibreChannelVolumeDriver(Li conf.source_path = connection_info['data']['device_path'] return conf - @utils.synchronized('connect_volume') - def connect_volume(self, connection_info, disk_info): - """Attach the volume to instance_name.""" + def _get_fc_connection_info(self, connection_info, mount_device): fc_properties = connection_info['data'] - mount_device = disk_info["dev"] ports = fc_properties['target_wwn'] wwns = [] @@ -1051,37 +1048,40 @@ class LibvirtFibreChannelVolumeDriver(Li msg = _("We are unable to locate any Fibre Channel devices") raise exception.NovaException(msg) + scope = { + 'host_device': None, + 'device_name': None, + 'tries': 0, + } + # The /dev/disk/by-path/... node is not always present immediately # We only need to find the first device. Once we see the first device # multipath will have any others. - def _wait_for_device_discovery(host_devices, mount_device): - tries = self.tries + def _wait_for_device_discovery(): for device in host_devices: LOG.debug("Looking for Fibre Channel dev %(device)s", {'device': device}) if os.path.exists(device): - self.host_device = device + scope['host_device'] = device # get the /dev/sdX device. This is used # to find the multipath device. - self.device_name = os.path.realpath(device) + scope['device_name'] = os.path.realpath(device) raise loopingcall.LoopingCallDone() - if self.tries >= CONF.libvirt.num_iscsi_scan_tries: + if scope['tries'] >= CONF.libvirt.num_iscsi_scan_tries: msg = _("Fibre Channel device not found.") raise exception.NovaException(msg) LOG.warn(_LW("Fibre volume not yet found at: %(mount_device)s. " "Will rescan & retry. Try number: %(tries)s"), - {'mount_device': mount_device, 'tries': tries}) + {'mount_device': mount_device, + 'tries': scope['tries']}) linuxscsi.rescan_hosts(hbas) - self.tries = self.tries + 1 + scope['tries'] += 1 - self.host_device = None - self.device_name = None - self.tries = 0 timer = loopingcall.FixedIntervalLoopingCall( - _wait_for_device_discovery, host_devices, mount_device) + _wait_for_device_discovery) timer.start(interval=2).wait() tries = self.tries
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor