]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Brick connector fix for NFS drivers
authorNavneet Singh <singn@netapp.com>
Sun, 20 Oct 2013 13:00:36 +0000 (18:30 +0530)
committerNavneet Singh <singn@netapp.com>
Sun, 20 Oct 2013 13:50:23 +0000 (19:20 +0530)
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

cinder/brick/initiator/connector.py
cinder/tests/test_coraid.py
cinder/volume/driver.py
cinder/volume/drivers/nfs.py

index 0778f946bba114e67ea5657ceceb8be2ddd1825a..d61b718800c3d8b2952f2a8c401e35370d88bc69 100644 (file)
@@ -797,6 +797,15 @@ class RemoteFsConnector(InitiatorConnector):
                  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)
@@ -822,7 +831,8 @@ class RemoteFsConnector(InitiatorConnector):
         """
 
         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']
index 277ba6ef7a88839224a1db48e223754ab3f89035..67394995c8b2421e594890ec6867e9e5aabe29fc 100644 (file)
@@ -785,7 +785,7 @@ class CoraidDriverImageTestCases(CoraidDriverTestCase):
 
         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)
index 226fbef20e67ccdf2a7393479b55e18ef200e484..baba887f0ce40c2395e194b4385da8e137eb8014 100644 (file)
@@ -371,6 +371,7 @@ class VolumeDriver(object):
         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)
index 277b173a6495772be6ab5b6b043f8fd37c0bc46a..bf56a19b2079fa9286ab399fa53fcb08580843ad 100644 (file)
@@ -373,15 +373,15 @@ class NfsDriver(RemoteFsDriver):
         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):