Do udevadm settle after running partx in image extn
This commit adds running 'udevadm settle' after running partx so that the partition table is re-read properly by lsblk which follows it. Closes-bug: 1432918 Change-Id: I1c7dddd3ed8cab175e608e09ecc4ae7f289cfc31
This commit is contained in:
parent
173f86963a
commit
ccda38a86e
|
@ -44,6 +44,7 @@ def _get_partition(device, uuid):
|
|||
try:
|
||||
utils.execute('partx', '-u', device, attempts=3,
|
||||
delay_on_retry=True)
|
||||
utils.execute('udevadm', 'settle')
|
||||
except processutils.ProcessExecutionError:
|
||||
LOG.warning("Couldn't re-read the partition table "
|
||||
"on device %s" % device)
|
||||
|
|
|
@ -215,13 +215,14 @@ class TestImageExtension(test_base.BaseTestCase):
|
|||
lsblk_output = ('''KNAME="test" UUID="" TYPE="disk"
|
||||
KNAME="test1" UUID="256a39e3-ca3c-4fb8-9cc2-b32eec441f47" TYPE="part"
|
||||
KNAME="test2" UUID="%s" TYPE="part"''' % self.fake_root_uuid)
|
||||
mock_execute.side_effect = (None, [lsblk_output])
|
||||
mock_execute.side_effect = (None, None, [lsblk_output])
|
||||
|
||||
root_part = image._get_partition(self.fake_dev,
|
||||
self.fake_root_uuid)
|
||||
self.assertEqual('/dev/test2', root_part)
|
||||
expected = [mock.call('partx', '-u', self.fake_dev, attempts=3,
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('lsblk', '-PbioKNAME,UUID,TYPE', self.fake_dev)]
|
||||
mock_execute.assert_has_calls(expected)
|
||||
self.assertFalse(mock_dispatch.called)
|
||||
|
@ -231,20 +232,21 @@ class TestImageExtension(test_base.BaseTestCase):
|
|||
lsblk_output = ('''KNAME="test" UUID="" TYPE="disk"
|
||||
KNAME="test1" UUID="256a39e3-ca3c-4fb8-9cc2-b32eec441f47" TYPE="part"
|
||||
KNAME="test2" UUID="" TYPE="part"''')
|
||||
mock_execute.side_effect = (None, [lsblk_output])
|
||||
mock_execute.side_effect = (None, None, [lsblk_output])
|
||||
|
||||
self.assertRaises(errors.DeviceNotFound,
|
||||
image._get_partition, self.fake_dev,
|
||||
self.fake_root_uuid)
|
||||
expected = [mock.call('partx', '-u', self.fake_dev, attempts=3,
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('lsblk', '-PbioKNAME,UUID,TYPE', self.fake_dev)]
|
||||
mock_execute.assert_has_calls(expected)
|
||||
self.assertFalse(mock_dispatch.called)
|
||||
|
||||
def test__get_partition_command_fail(self, mock_execute,
|
||||
mock_dispatch):
|
||||
mock_execute.side_effect = (None,
|
||||
mock_execute.side_effect = (None, None,
|
||||
processutils.ProcessExecutionError('boom'))
|
||||
self.assertRaises(errors.CommandExecutionError,
|
||||
image._get_partition, self.fake_dev,
|
||||
|
@ -252,6 +254,7 @@ class TestImageExtension(test_base.BaseTestCase):
|
|||
|
||||
expected = [mock.call('partx', '-u', self.fake_dev, attempts=3,
|
||||
delay_on_retry=True),
|
||||
mock.call('udevadm', 'settle'),
|
||||
mock.call('lsblk', '-PbioKNAME,UUID,TYPE', self.fake_dev)]
|
||||
mock_execute.assert_has_calls(expected)
|
||||
self.assertFalse(mock_dispatch.called)
|
||||
|
|
Loading…
Reference in New Issue