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:
Gaurang Tapase 2015-08-12 03:23:29 -04:00
parent 51a2bbefe1
commit 6aae96c527
2 changed files with 47 additions and 0 deletions

View File

@ -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."""

View File

@ -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