Merge "Check for device node availability before mkfs"

This commit is contained in:
Jenkins 2016-02-26 06:09:45 +00:00 committed by Gerrit Code Review
commit 4f14e66781
2 changed files with 22 additions and 0 deletions

View File

@ -250,8 +250,15 @@ class GenericShareDriver(driver.ExecuteMixin, driver.ShareDriver):
},
}
@utils.retry(exception.ProcessExecutionError, backoff_rate=1)
def _is_device_file_available(self, server_details, volume):
"""Checks whether the device file is available"""
command = ['sudo', 'test', '-b', volume['mountpoint']]
self._ssh_exec(server_details, command)
def _format_device(self, server_details, volume):
"""Formats device attached to the service vm."""
self._is_device_file_available(server_details, volume)
command = ['sudo', 'mkfs.%s' % self.configuration.share_volume_fstype,
volume['mountpoint']]
self._ssh_exec(server_details, command)

View File

@ -369,11 +369,26 @@ class GenericShareDriverTestCase(test.TestCase):
self.assertRaises(exception.InvalidShare, self._driver.create_share,
self._context, self.share, share_server=self.server)
def test_is_device_file_available(self):
volume = {'mountpoint': 'fake_mount_point'}
self.mock_object(self._driver, '_ssh_exec',
mock.Mock(return_value=None))
self._driver._is_device_file_available(self.server, volume)
self._driver._ssh_exec.assert_called_once_with(
self.server, ['sudo', 'test', '-b', volume['mountpoint']])
def test_format_device(self):
volume = {'mountpoint': 'fake_mount_point'}
self.mock_object(self._driver, '_ssh_exec',
mock.Mock(return_value=('', '')))
self.mock_object(self._driver, '_is_device_file_available')
self._driver._format_device(self.server, volume)
self._driver._is_device_file_available.assert_called_once_with(
self.server, volume)
self._driver._ssh_exec.assert_called_once_with(
self.server,
['sudo', 'mkfs.%s' % self.fake_conf.share_volume_fstype,