This change fixes the error that comes
while getting brick connector and attaching volumes
in case of NFS drivers in cinder. The attribute for
mount point base was not passed to attach_volume method
as the connector initialization logic is common for all
types of protocols. It is fixed by populating
the required parameter in the RemoteFsConnector
for NFS drivers.
Change-Id: I8601326b318f6f8c53a03610f1b4f2bfd14070ff
Closes-Bug: #
1238085
execute=putils.execute,
device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
*args, **kwargs):
+ if mount_type.lower() == 'nfs':
+ if driver:
+ kwargs = kwargs or {}
+ kwargs['nfs_mount_point_base'] =\
+ kwargs.get('nfs_mount_point_base') or\
+ getattr(driver, 'base', None)
+ else:
+ LOG.warn(_("NFS volume driver is absent."
+ " RemoteFsClient may not initialize properly."))
self._remotefsclient = remotefs.RemoteFsClient(mount_type, root_helper,
execute=execute,
*args, **kwargs)
"""
mnt_flags = []
- if 'options' in connection_properties:
+ if ('options' in connection_properties and
+ connection_properties['options']):
mnt_flags = connection_properties['options'].split()
nfs_share = connection_properties['export']
aoe_initiator = self.mox.CreateMockAnything()
- utils.brick_get_connector('aoe',
+ utils.brick_get_connector('aoe', driver=mox.IgnoreArg(),
device_scan_attempts=3,
use_multipath=False).\
AndReturn(aoe_initiator)
device_scan_attempts = self.configuration.num_volume_device_scan_tries
protocol = conn['driver_volume_type']
connector = utils.brick_get_connector(protocol,
+ driver=self,
use_multipath=use_multipath,
device_scan_attempts=
device_scan_attempts)
super(NfsDriver, self).__init__(*args, **kwargs)
self.configuration.append_config_values(volume_opts)
root_helper = utils.get_root_helper()
- base = getattr(self.configuration,
- 'nfs_mount_point_base',
- CONF.nfs_mount_point_base)
+ self.base = getattr(self.configuration,
+ 'nfs_mount_point_base',
+ CONF.nfs_mount_point_base)
opts = getattr(self.configuration,
'nfs_mount_options',
CONF.nfs_mount_options)
self._remotefsclient = remotefs.RemoteFsClient(
'nfs', root_helper, execute=execute,
- nfs_mount_point_base=base,
+ nfs_mount_point_base=self.base,
nfs_mount_options=opts)
def set_execute(self, execute):