summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers/modules/ilo
diff options
context:
space:
mode:
authorkesper <paresh.h.sao@gmail.com>2020-07-30 06:24:38 +0000
committerkesper <paresh.h.sao@gmail.com>2020-09-04 07:20:35 +0000
commit9fb4074bfef7b6e4ead7d3cedf7120668966eaa1 (patch)
treee06b6ee8864096218b2ca2a67cdb7a08de8c3b6c /ironic/tests/unit/drivers/modules/ilo
parent99e8fc981056735928443fa572a38a10d07a51ff (diff)
downloadironic-9fb4074bfef7b6e4ead7d3cedf7120668966eaa1.tar.gz
OOB one button secure erase for iLO5 based HPE Proliant servers.
This commit adds functionality to perform out-of-band one button secure erase for iLO5 based HPE Proliant servers. Using this a user can securely erase the whole system. It includes deleting any deployment settings profiles, all licenses, Active Health System (AHS) and warranty data stored there, reseting BIOS and erasing supported non-volatile storage data. Change-Id: I2f46a67580e8a607a91a3f6660feb85ed1827dc8 Story: #2007964 Task: #40458
Diffstat (limited to 'ironic/tests/unit/drivers/modules/ilo')
-rw-r--r--ironic/tests/unit/drivers/modules/ilo/test_management.py41
1 files changed, 40 insertions, 1 deletions
diff --git a/ironic/tests/unit/drivers/modules/ilo/test_management.py b/ironic/tests/unit/drivers/modules/ilo/test_management.py
index 684c50c36..76cebb0c9 100644
--- a/ironic/tests/unit/drivers/modules/ilo/test_management.py
+++ b/ironic/tests/unit/drivers/modules/ilo/test_management.py
@@ -1669,11 +1669,12 @@ class Ilo5ManagementTestCase(db_base.DbTestCase):
task.driver.management.erase_devices,
task, erase_pattern={'ssd': 'xyz'})
+ @mock.patch.object(ilo_management.LOG, 'error', autospec=True)
@mock.patch.object(ilo_common, 'get_ilo_object', autospec=True)
@mock.patch.object(ilo_management.Ilo5Management, '_set_clean_failed',
autospec=True)
def test_erase_devices_hdd_ilo_error(self, set_clean_failed_mock,
- ilo_mock):
+ ilo_mock, log_mock):
ilo_mock_object = ilo_mock.return_value
ilo_mock_object.get_available_disk_types.return_value = ['HDD']
exc = ilo_error.IloError('error')
@@ -1691,5 +1692,43 @@ class Ilo5ManagementTestCase(db_base.DbTestCase):
task.node.driver_internal_info)
self.assertNotIn('skip_current_clean_step',
task.node.driver_internal_info)
+ self.assertTrue(log_mock.called)
set_clean_failed_mock.assert_called_once_with(
mock.ANY, task, exc)
+
+ @mock.patch.object(manager_utils, 'node_power_action', autospec=True)
+ @mock.patch.object(ilo_common, 'get_ilo_object', autospec=True)
+ def test_one_button_secure_erase(self, ilo_mock, mock_power):
+ ilo_mock_object = ilo_mock.return_value
+ self.node.clean_step = {'step': 'one_button_secure_erase',
+ 'interface': 'management'}
+ self.node.save()
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=False) as task:
+ result = task.driver.management.one_button_secure_erase(task)
+ self.assertTrue(
+ ilo_mock_object.do_one_button_secure_erase.called)
+ self.assertEqual(states.CLEANWAIT, result)
+ mock_power.assert_called_once_with(task, states.REBOOT)
+ self.assertEqual(task.node.maintenance, True)
+
+ @mock.patch.object(ilo_management.LOG, 'error', autospec=True)
+ @mock.patch.object(ilo_common, 'get_ilo_object', autospec=True)
+ @mock.patch.object(ilo_management.Ilo5Management, '_set_clean_failed',
+ autospec=True)
+ def test_one_button_secure_erase_ilo_error(
+ self, set_clean_failed_mock, ilo_mock, log_mock):
+ ilo_mock_object = ilo_mock.return_value
+ self.node.clean_step = {'step': 'one_button_secure_erase',
+ 'interface': 'management'}
+ self.node.save()
+ exc = ilo_error.IloError('error')
+ ilo_mock_object.do_one_button_secure_erase.side_effect = exc
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=False) as task:
+ task.driver.management.one_button_secure_erase(task)
+ set_clean_failed_mock.assert_called_once_with(mock.ANY,
+ task, exc)
+ self.assertTrue(
+ ilo_mock_object.do_one_button_secure_erase.called)
+ self.assertTrue(log_mock.called)