summaryrefslogtreecommitdiff
path: root/ironic
diff options
context:
space:
mode:
authorAija Jauntēva <aija.jaunteva@dell.com>2022-01-20 05:56:55 -0500
committerAija Jauntēva <aija.jaunteva@dell.com>2022-01-21 05:44:06 -0500
commitbfea8f17b041f458e59557ebbb2f9cc50f8fdf24 (patch)
tree9415e8f5264a7c4619c3b775ac7726ef61723dd5 /ironic
parentc65cbb7aef1289b44d2f1ff0c3f0aaa7c31284c0 (diff)
downloadironic-bfea8f17b041f458e59557ebbb2f9cc50f8fdf24.tar.gz
Add idrac-wsman clean steps to not require ramdisk
For BIOS factory_reset updated to use power interface as direct REBOOT call fails when system is OFF that can happen if running without ramdisk. Change-Id: I9baf13e9a089bc692e8010dc7e291d7791d1f73c
Diffstat (limited to 'ironic')
-rw-r--r--ironic/drivers/modules/drac/bios.py6
-rw-r--r--ironic/drivers/modules/drac/management.py6
-rw-r--r--ironic/drivers/modules/drac/raid.py4
-rw-r--r--ironic/tests/unit/drivers/modules/drac/test_bios.py4
4 files changed, 12 insertions, 8 deletions
diff --git a/ironic/drivers/modules/drac/bios.py b/ironic/drivers/modules/drac/bios.py
index 8ea3ff51f..2ee565768 100644
--- a/ironic/drivers/modules/drac/bios.py
+++ b/ironic/drivers/modules/drac/bios.py
@@ -71,7 +71,7 @@ class DracWSManBIOS(base.BIOSInterface):
reason=_("Unable to import dracclient.exceptions library"))
@METRICS.timer('DracWSManBIOS.apply_configuration')
- @base.clean_step(priority=0, argsinfo=_args_info)
+ @base.clean_step(priority=0, argsinfo=_args_info, requires_ramdisk=False)
@base.deploy_step(priority=0, argsinfo=_args_info)
def apply_configuration(self, task, settings):
"""Apply the BIOS configuration to the node
@@ -352,7 +352,7 @@ class DracWSManBIOS(base.BIOSInterface):
manager_utils.notify_conductor_resume_deploy(task)
@METRICS.timer('DracWSManBIOS.factory_reset')
- @base.clean_step(priority=0)
+ @base.clean_step(priority=0, requires_ramdisk=False)
@base.deploy_step(priority=0)
def factory_reset(self, task):
"""Reset the BIOS settings of the node to the factory default.
@@ -418,7 +418,7 @@ class DracWSManBIOS(base.BIOSInterface):
node.timestamp_driver_internal_info('factory_reset_time')
# rebooting the server to apply factory reset value
- client.set_power_state('REBOOT')
+ task.driver.power.reboot(task)
# This method calls node.save(), bios_config_job_id will be
# saved automatically
diff --git a/ironic/drivers/modules/drac/management.py b/ironic/drivers/modules/drac/management.py
index f18f5e29e..0e9284990 100644
--- a/ironic/drivers/modules/drac/management.py
+++ b/ironic/drivers/modules/drac/management.py
@@ -763,7 +763,7 @@ class DracWSManManagement(base.ManagementInterface):
@METRICS.timer('DracManagement.reset_idrac')
@base.verify_step(priority=0)
- @base.clean_step(priority=0)
+ @base.clean_step(priority=0, requires_ramdisk=False)
def reset_idrac(self, task):
"""Reset the iDRAC.
@@ -778,7 +778,7 @@ class DracWSManManagement(base.ManagementInterface):
@METRICS.timer('DracManagement.known_good_state')
@base.verify_step(priority=0)
- @base.clean_step(priority=0)
+ @base.clean_step(priority=0, requires_ramdisk=False)
def known_good_state(self, task):
"""Reset the iDRAC, Clear the job queue.
@@ -794,7 +794,7 @@ class DracWSManManagement(base.ManagementInterface):
@METRICS.timer('DracManagement.clear_job_queue')
@base.verify_step(priority=0)
- @base.clean_step(priority=0)
+ @base.clean_step(priority=0, requires_ramdisk=False)
def clear_job_queue(self, task):
"""Clear the job queue.
diff --git a/ironic/drivers/modules/drac/raid.py b/ironic/drivers/modules/drac/raid.py
index d4e633f9c..ae5282838 100644
--- a/ironic/drivers/modules/drac/raid.py
+++ b/ironic/drivers/modules/drac/raid.py
@@ -1593,7 +1593,7 @@ class DracWSManRAID(base.RAIDInterface):
),
"required": False,
}
- })
+ }, requires_ramdisk=False)
def create_configuration(self, task,
create_root_volume=True,
create_nonroot_volumes=True,
@@ -1690,7 +1690,7 @@ class DracWSManRAID(base.RAIDInterface):
return _create_virtual_disks(task, node)
@METRICS.timer('DracRAID.delete_configuration')
- @base.clean_step(priority=0)
+ @base.clean_step(priority=0, requires_ramdisk=False)
@base.deploy_step(priority=0)
def delete_configuration(self, task):
"""Delete the RAID configuration.
diff --git a/ironic/tests/unit/drivers/modules/drac/test_bios.py b/ironic/tests/unit/drivers/modules/drac/test_bios.py
index e24267f95..ab56fed0e 100644
--- a/ironic/tests/unit/drivers/modules/drac/test_bios.py
+++ b/ironic/tests/unit/drivers/modules/drac/test_bios.py
@@ -22,6 +22,7 @@ Test class for DRAC BIOS configuration specific methods
from unittest import mock
from dracclient import exceptions as drac_exceptions
+from oslo_utils import importutils
from oslo_utils import timeutils
from ironic.common import exception
@@ -36,6 +37,8 @@ from ironic import objects
from ironic.tests.unit.drivers.modules.drac import utils as test_utils
from ironic.tests.unit.objects import utils as obj_utils
+drac_constants = importutils.try_import('dracclient.constants')
+
INFO_DICT = test_utils.INFO_DICT
@@ -73,6 +76,7 @@ class DracWSManBIOSConfigurationTestCase(test_utils.BaseDracTest):
}
self.mock_client.commit_pending_bios_changes.return_value = \
"JID_5678"
+ self.mock_client.get_power_state.return_value = drac_constants.POWER_ON
@mock.patch.object(drac_common, 'parse_driver_info',
autospec=True)