diff --git a/manila/share/drivers/helpers.py b/manila/share/drivers/helpers.py index 12e0de8457..9d68653e78 100644 --- a/manila/share/drivers/helpers.py +++ b/manila/share/drivers/helpers.py @@ -339,6 +339,8 @@ class NFSHelper(NASHelperBase): items = line.split(' ') if local_path == items[0]: entries.append(items[1]) + # exportfs may print"" instead of "*" for host + entries = ["*" if item == "" else item for item in entries] return entries def _sync_nfs_temp_and_perm_files(self, server): diff --git a/manila/tests/share/drivers/test_helpers.py b/manila/tests/share/drivers/test_helpers.py index 072c31e69b..2f29c44906 100644 --- a/manila/tests/share/drivers/test_helpers.py +++ b/manila/tests/share/drivers/test_helpers.py @@ -256,11 +256,12 @@ class NFSHelperTestCase(test.TestCase): def test_get_host_list(self): fake_exportfs = ('/shares/share-1\n\t\t20.0.0.3\n' '/shares/share-1\n\t\t20.0.0.6\n' + '/shares/share-1\n\t\t\n' '/shares/share-2\n\t\t10.0.0.2\n' '/shares/share-2\n\t\t10.0.0.5\n' '/shares/share-3\n\t\t30.0.0.4\n' '/shares/share-3\n\t\t30.0.0.7\n') - expected = ['20.0.0.3', '20.0.0.6'] + expected = ['20.0.0.3', '20.0.0.6', '*'] result = self._helper.get_host_list(fake_exportfs, '/shares/share-1') self.assertEqual(expected, result) @@ -408,7 +409,7 @@ class NFSHelperTestCase(test.TestCase): '"{}"'.format(':'.join(['1.1.1.16', local_path]))]), mock.call(self.server, ['sudo', 'exportfs', '-u', - '"{}"'.format(':'.join(['', local_path]))]), + '"{}"'.format(':'.join(['*', local_path]))]), ]) self._helper._sync_nfs_temp_and_perm_files.assert_called_once_with( diff --git a/releasenotes/notes/fix-generic-driver-resize-0fde9c8674db5951.yaml b/releasenotes/notes/fix-generic-driver-resize-0fde9c8674db5951.yaml new file mode 100644 index 0000000000..bc5b078c7d --- /dev/null +++ b/releasenotes/notes/fix-generic-driver-resize-0fde9c8674db5951.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + For generic driver, when resize a share it may failed due to exportfs + can't recognize "" as part of the share path. This issue has been + fixed by replacing "" to "*".