execute=putils.execute,
device_scan_attempts=DEVICE_SCAN_ATTEMPTS_DEFAULT,
*args, **kwargs):
+ kwargs = kwargs or {}
+ conn = kwargs.get('conn')
+ if conn:
+ mount_point_base = conn.get('mount_point_base')
+ if mount_type.lower() == 'nfs':
+ kwargs['nfs_mount_point_base'] =\
+ kwargs.get('nfs_mount_point_base') or\
+ mount_point_base
+ elif mount_type.lower() == 'glusterfs':
+ kwargs['glusterfs_mount_point_base'] =\
+ kwargs.get('glusterfs_mount_point_base') or\
+ mount_point_base
+ else:
+ LOG.warn(_("Connection details not present."
+ " 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 connection_properties.get('options'):
mnt_flags = connection_properties['options'].split()
nfs_share = connection_properties['export']
def brick_get_connector(protocol, driver=None,
execute=processutils.execute,
use_multipath=False,
- device_scan_attempts=3):
+ device_scan_attempts=3,
+ *args, **kwargs):
"""Wrapper to get a brick connector object.
This automatically populates the required protocol as well
as the root_helper needed to execute commands.
execute=execute,
use_multipath=use_multipath,
device_scan_attempts=
- device_scan_attempts)
+ device_scan_attempts,
+ *args, **kwargs)
def require_driver_initialized(func):
data['options'] = self.shares[volume['provider_location']]
return {
'driver_volume_type': self.driver_volume_type,
- 'data': data
+ 'data': data,
+ 'mount_point_base': self._get_mount_point_base()
}
+ def _get_mount_point_base(self):
+ """Returns the mount point base for the remote fs.
+
+ This method facilitates returning mount point base
+ for the specific remote fs. Override this method
+ in the respective driver to return the entry to be
+ used while attach/detach using brick in cinder.
+ If not overridden then it returns None without
+ raising exception to continue working for cases
+ when not used with brick.
+ """
+ LOG.debug(_("Driver specific implementation needs to return"
+ " mount_point_base."))
+ return None
+
def create_volume(self, volume):
"""Creates a volume.
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)
+ # base bound to instance is used in RemoteFsConnector.
+ 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):
'*snapshot*', mount_point, run_as_root=True)
total_allocated = float(du.split()[0])
return total_size, total_available, total_allocated
+
+ def _get_mount_point_base(self):
+ return self.base