diff options
author | Zuul <zuul@review.opendev.org> | 2021-01-18 14:08:52 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2021-01-18 14:08:52 +0000 |
commit | d35eb8bd0e401f659fa4190ea875251ff841a345 (patch) | |
tree | 20ecf6d0612255bfe7de602420651baf529ff15a /ironic/tests/unit/drivers/modules/redfish/test_boot.py | |
parent | ad044d9e0b796fe0b8caab8370a8d040b64e506a (diff) | |
parent | 1a0f1cd545f0ff22e72d89fda40b1e64d61401f5 (diff) | |
download | ironic-d35eb8bd0e401f659fa4190ea875251ff841a345.tar.gz |
Merge "Add a delay/retry is vmedia insert fails"
Diffstat (limited to 'ironic/tests/unit/drivers/modules/redfish/test_boot.py')
-rw-r--r-- | ironic/tests/unit/drivers/modules/redfish/test_boot.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/ironic/tests/unit/drivers/modules/redfish/test_boot.py b/ironic/tests/unit/drivers/modules/redfish/test_boot.py index 110c1b7f6..c632d8615 100644 --- a/ironic/tests/unit/drivers/modules/redfish/test_boot.py +++ b/ironic/tests/unit/drivers/modules/redfish/test_boot.py @@ -846,6 +846,36 @@ class RedfishVirtualMediaBootTestCase(db_base.DbTestCase): self.assertFalse(mock_vmedia_cd.insert_media.call_count) @mock.patch.object(redfish_boot, 'redfish_utils', autospec=True) + @mock.patch('time.sleep', lambda *args, **kwargs: None) + def test__insert_vmedia_while_ejecting(self, mock_redfish_utils): + + with task_manager.acquire(self.context, self.node.uuid, + shared=True) as task: + mock_vmedia_cd = mock.MagicMock( + inserted=False, + image='img-url', + media_types=[sushy.VIRTUAL_MEDIA_CD], + ) + mock_manager = mock.MagicMock() + + def clear_and_raise(*args, **kwargs): + mock_vmedia_cd.insert_media.side_effect = None + raise sushy.exceptions.ServerSideError( + "POST", 'img-url', mock.MagicMock()) + mock_vmedia_cd.insert_media.side_effect = clear_and_raise + mock_manager.virtual_media.get_members.return_value = [ + mock_vmedia_cd] + + mock_redfish_utils.get_system.return_value.managers = [ + mock_manager] + + redfish_boot._insert_vmedia( + task, 'img-url', sushy.VIRTUAL_MEDIA_CD) + + self.assertEqual(mock_vmedia_cd.insert_media.call_count, 2) + + @mock.patch.object(redfish_boot, 'redfish_utils', autospec=True) + @mock.patch('time.sleep', lambda *args, **kwargs: None) def test__insert_vmedia_bad_device(self, mock_redfish_utils): with task_manager.acquire(self.context, self.node.uuid, @@ -865,6 +895,7 @@ class RedfishVirtualMediaBootTestCase(db_base.DbTestCase): exception.InvalidParameterValue, redfish_boot._insert_vmedia, task, 'img-url', sushy.VIRTUAL_MEDIA_CD) + self.assertEqual(mock_redfish_utils.get_system.call_count, 1) @mock.patch.object(redfish_boot, 'redfish_utils', autospec=True) def test_eject_vmedia_everything(self, mock_redfish_utils): |