diff --git a/ironic/conductor/cleaning.py b/ironic/conductor/cleaning.py index 53d66ddd81..e59841a99b 100644 --- a/ironic/conductor/cleaning.py +++ b/ironic/conductor/cleaning.py @@ -114,8 +114,9 @@ def do_node_clean(task, clean_steps=None, disable_ramdisk=False): try: conductor_steps.set_node_cleaning_steps( task, disable_ramdisk=disable_ramdisk) - except (exception.InvalidParameterValue, - exception.NodeCleaningFailure) as e: + except Exception as e: + # Catch all exceptions and follow the error handling + # path so things are cleaned up properly. msg = (_('Cannot clean node %(node)s: %(msg)s') % {'node': node.uuid, 'msg': e}) return utils.cleaning_error_handler(task, msg) diff --git a/releasenotes/notes/catch-all-cleaning-exceptions-1317a534a1c9db56.yaml b/releasenotes/notes/catch-all-cleaning-exceptions-1317a534a1c9db56.yaml new file mode 100644 index 0000000000..eb3cc61f9a --- /dev/null +++ b/releasenotes/notes/catch-all-cleaning-exceptions-1317a534a1c9db56.yaml @@ -0,0 +1,8 @@ +--- +fixes: + - | + Fixes an issue where unexpected exceptions coming from the process to + start cleaning would not trigger the cleaning_error_handler which + performs the needful internal resets to permit cleaning to be retried + again in the future. Now any error which is encountered during the + launch of cleaning will trigger the error handler.