Adding extend share support in IBM GPFS Driver
This change helps extend the size of the share by changing the quota on GPFS fileset created for that share. Change-Id: I8076200b1350feadbb782ccd330e477c6edd52aa Closes-Bug: #1481180
This commit is contained in:
parent
51a2bbefe1
commit
6aae96c527
|
@ -120,6 +120,7 @@ class GPFSShareDriver(driver.ExecuteMixin, driver.GaneshaMixin,
|
|||
API version history:
|
||||
|
||||
1.0 - Initial version.
|
||||
1.1 - Added extend_share functionality
|
||||
"""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
@ -447,6 +448,20 @@ class GPFSShareDriver(driver.ExecuteMixin, driver.GaneshaMixin,
|
|||
LOG.error(msg)
|
||||
raise exception.GPFSException(msg)
|
||||
|
||||
def _extend_share(self, shareobj, new_size):
|
||||
sharename = shareobj['name']
|
||||
sizestr = '%sG' % new_size
|
||||
fsdev = self._get_gpfs_device()
|
||||
try:
|
||||
self._gpfs_execute('mmsetquota', '-j', sharename, '-h',
|
||||
sizestr, fsdev)
|
||||
except exception.ProcessExecutionError as e:
|
||||
msg = (_('Failed to set quota for the share %(sharename)s. '
|
||||
'Error: %(excmsg)s.') %
|
||||
{'sharename': sharename, 'excmsg': e})
|
||||
LOG.error(msg)
|
||||
raise exception.GPFSException(msg)
|
||||
|
||||
def get_network_allocations_number(self):
|
||||
return 0
|
||||
|
||||
|
@ -479,6 +494,10 @@ class GPFSShareDriver(driver.ExecuteMixin, driver.GaneshaMixin,
|
|||
"""Deletes a snapshot."""
|
||||
self._delete_share_snapshot(snapshot)
|
||||
|
||||
def extend_share(self, share, new_size, share_server=None):
|
||||
"""Extends the quota on the share fileset."""
|
||||
self._extend_share(share, new_size)
|
||||
|
||||
def ensure_share(self, ctx, share, share_server=None):
|
||||
"""Ensure that storage are mounted and exported."""
|
||||
|
||||
|
|
|
@ -219,6 +219,34 @@ class GPFSShareDriverTestCase(test.TestCase):
|
|||
'-j', self.snapshot['share_name']
|
||||
)
|
||||
|
||||
def test_extend_share(self):
|
||||
self._driver._extend_share = mock.Mock()
|
||||
self._driver.extend_share(self.share, 10)
|
||||
self._driver._extend_share.assert_called_once_with(self.share, 10)
|
||||
|
||||
def test__extend_share(self):
|
||||
self._driver._get_gpfs_device = mock.Mock(return_value=self.fakedev)
|
||||
self._driver._gpfs_execute = mock.Mock(return_value=True)
|
||||
self._driver._extend_share(self.share, 10)
|
||||
self._driver._gpfs_execute.assert_called_once_with('mmsetquota', '-j',
|
||||
self.share['name'],
|
||||
'-h', '10G',
|
||||
self.fakedev)
|
||||
self._driver._get_gpfs_device.assert_called_once_with()
|
||||
|
||||
def test__extend_share_exception(self):
|
||||
self._driver._get_gpfs_device = mock.Mock(return_value=self.fakedev)
|
||||
self._driver._gpfs_execute = mock.Mock(
|
||||
side_effect=exception.ProcessExecutionError
|
||||
)
|
||||
self.assertRaises(exception.GPFSException,
|
||||
self._driver._extend_share, self.share, 10)
|
||||
self._driver._gpfs_execute.assert_called_once_with('mmsetquota', '-j',
|
||||
self.share['name'],
|
||||
'-h', '10G',
|
||||
self.fakedev)
|
||||
self._driver._get_gpfs_device.assert_called_once_with()
|
||||
|
||||
def test_allow_access(self):
|
||||
self._driver._get_share_path = mock.Mock(
|
||||
return_value=self.fakesharepath
|
||||
|
|
Loading…
Reference in New Issue