summaryrefslogtreecommitdiff
path: root/ironic/drivers/modules/redfish/management.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/drivers/modules/redfish/management.py')
-rw-r--r--ironic/drivers/modules/redfish/management.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/ironic/drivers/modules/redfish/management.py b/ironic/drivers/modules/redfish/management.py
index 70d64cd57..3dd11ff3d 100644
--- a/ironic/drivers/modules/redfish/management.py
+++ b/ironic/drivers/modules/redfish/management.py
@@ -303,6 +303,19 @@ class RedfishManagement(base.ManagementInterface):
{'node': task.node.uuid, 'mode': mode,
'error': e})
LOG.error(error_msg)
+
+ # NOTE(sbaker): Some systems such as HPE Gen9 do not support
+ # getting or setting the boot mode. When setting failed and the
+ # mode attribute is missing from the boot field, raising
+ # UnsupportedDriverExtension will allow the deploy to continue.
+ if system.boot.get('mode') is None:
+ LOG.info(_('Attempt to set boot mode on node %(node)s '
+ 'failed to set boot mode as the node does not '
+ 'appear to support overriding the boot mode. '
+ 'Possibly partial Redfish implementation?'),
+ {'node': task.node.uuid})
+ raise exception.UnsupportedDriverExtension(
+ driver=task.node.driver, extension='set_boot_mode')
raise exception.RedfishError(error=error_msg)
def get_boot_mode(self, task):