Fix 'extend_share' in generic driver
When we create a share and mount it on client VM, we cannot do 'manila extend' because of error: Stderr: u'umount: /shares/share-xxxxxx: device is busy. We need to 'disable_access_for_maintenance' before doing an extension and 'restore_access_after_maintenance' after extension was done. Closes-Bug: #1473033 Change-Id: I4b5e665f8d028d4784d02411bbe6daace30aa49e
This commit is contained in:
parent
c98d1c2be8
commit
48c7b605db
|
@ -557,6 +557,8 @@ class GenericShareDriver(driver.ExecuteMixin, driver.ShareDriver):
|
|||
def extend_share(self, share, new_size, share_server=None):
|
||||
server_details = share_server['backend_details']
|
||||
|
||||
helper = self._get_helper(share)
|
||||
helper.disable_access_for_maintenance(server_details, share['name'])
|
||||
self._unmount_device(share, server_details)
|
||||
self._detach_volume(self.admin_context, share, server_details)
|
||||
|
||||
|
@ -570,6 +572,8 @@ class GenericShareDriver(driver.ExecuteMixin, driver.ShareDriver):
|
|||
volume)
|
||||
self._resize_filesystem(server_details, volume)
|
||||
self._mount_device(share, server_details, volume)
|
||||
helper.restore_access_after_maintenance(server_details,
|
||||
share['name'])
|
||||
|
||||
def _extend_volume(self, context, volume, new_size):
|
||||
self.volume_api.extend(context, volume['id'], new_size)
|
||||
|
|
|
@ -1385,7 +1385,11 @@ class GenericShareDriverTestCase(test.TestCase):
|
|||
|
||||
def test_extend_share(self):
|
||||
fake_volume = "fake"
|
||||
fake_share = {'id': 'fake'}
|
||||
fake_share = {
|
||||
'id': 'fake',
|
||||
'share_proto': 'NFS',
|
||||
'name': 'test_share',
|
||||
}
|
||||
new_size = 123
|
||||
srv_details = self.server['backend_details']
|
||||
self.mock_object(
|
||||
|
@ -1419,6 +1423,10 @@ class GenericShareDriverTestCase(test.TestCase):
|
|||
mock.ANY, fake_volume, new_size)
|
||||
self._driver._attach_volume.assert_called_once_with(
|
||||
mock.ANY, fake_share, srv_details['instance_id'], mock.ANY)
|
||||
self._helper_nfs.disable_access_for_maintenance.\
|
||||
assert_called_once_with(srv_details, 'test_share')
|
||||
self._helper_nfs.restore_access_after_maintenance.\
|
||||
assert_called_once_with(srv_details, 'test_share')
|
||||
self.assertTrue(self._driver._resize_filesystem.called)
|
||||
|
||||
def test_extend_volume(self):
|
||||
|
|
Loading…
Reference in New Issue