diff options
Diffstat (limited to 'ironic/drivers/modules/drac')
-rw-r--r-- | ironic/drivers/modules/drac/management.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ironic/drivers/modules/drac/management.py b/ironic/drivers/modules/drac/management.py index 96e8dd5b5..56e233257 100644 --- a/ironic/drivers/modules/drac/management.py +++ b/ironic/drivers/modules/drac/management.py @@ -545,9 +545,21 @@ class DracRedfishManagement(redfish_management.RedfishManagement): info.pop('import_task_monitor_url', None) node.driver_internal_info = info + succeeded = False if (import_task.task_state == sushy.TASK_STATE_COMPLETED and import_task.task_status in [sushy.HEALTH_OK, sushy.HEALTH_WARNING]): + + # Task could complete with errors (partial success) + # iDRAC 5.00.00.00 has stopped reporting Critical messages + # so checking also by message_id + succeeded = not any(m.message for m in import_task.messages + if (m.severity + and m.severity != sushy.SEVERITY_OK) + or (m.message_id and 'SYS055' + in m.message_id)) + + if succeeded: LOG.info('Configuration import %(task_monitor_url)s ' 'successful for node %(node)s', {'node': node.uuid, @@ -577,7 +589,11 @@ class DracRedfishManagement(redfish_management.RedfishManagement): # Select all messages, skipping OEM messages that don't have # `message` field populated. messages = [m.message for m in import_task.messages - if m.message is not None] + if m.message is not None + and ((m.severity + and m.severity != sushy.SEVERITY_OK) + or (m.message_id + and 'SYS055' in m.message_id))] error_msg = (_("Failed import configuration task: " "%(task_monitor_url)s. Message: '%(message)s'.") % {'task_monitor_url': task_monitor_url, |