From 0ac0e43e0e7afbd1d9be95e92c06a34d26892029 Mon Sep 17 00:00:00 2001 From: Yaguang Tang Date: Wed, 12 Mar 2025 14:43:23 +0800 Subject: [PATCH] fix volume resize issue when host not recognized Closes-Bug: #2101015 Change-Id: I3f9d60509ab01bcc4c808341dda8ea6c46f04738 --- manila/share/drivers/helpers.py | 2 ++ manila/tests/share/drivers/test_helpers.py | 5 +++-- .../notes/fix-generic-driver-resize-0fde9c8674db5951.yaml | 6 ++++++ 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/fix-generic-driver-resize-0fde9c8674db5951.yaml 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 "*".