Merge "Improve edge-case debugging for deployment and cleaning" into bugfix/18.1

This commit is contained in:
Zuul 2021-09-15 00:09:58 +00:00 committed by Gerrit Code Review
commit 6105d6e148
3 changed files with 19 additions and 4 deletions

View File

@ -126,7 +126,8 @@ def do_node_clean(task, clean_steps=None, disable_ramdisk=False):
@utils.fail_on_error(utils.cleaning_error_handler,
_("Unexpected error when processing next clean step"))
_("Unexpected error when processing next clean step"),
traceback=True)
@task_manager.require_exclusive_lock
def do_next_clean_step(task, step_index, disable_ramdisk=None):
"""Do cleaning, starting from the specified clean step.
@ -145,6 +146,8 @@ def do_next_clean_step(task, step_index, disable_ramdisk=None):
if step_index is None:
steps = []
else:
assert node.driver_internal_info.get('clean_steps') is not None, \
f"BUG: No clean steps for {node.uuid}, step index is {step_index}"
steps = node.driver_internal_info['clean_steps'][step_index:]
if disable_ramdisk is None:
@ -285,7 +288,8 @@ def do_node_clean_abort(task, step_name=None):
@utils.fail_on_error(utils.cleaning_error_handler,
_("Unexpected error when processing next clean step"))
_("Unexpected error when processing next clean step"),
traceback=True)
@task_manager.require_exclusive_lock
def continue_node_clean(task):
"""Continue cleaning after finishing an async clean step.

View File

@ -222,7 +222,8 @@ def do_node_deploy(task, conductor_id=None, configdrive=None,
@utils.fail_on_error(utils.deploying_error_handler,
_("Unexpected error when processing next deploy step"))
_("Unexpected error when processing next deploy step"),
traceback=True)
@task_manager.require_exclusive_lock
def do_next_deploy_step(task, step_index):
"""Do deployment, starting from the specified deploy step.
@ -363,7 +364,8 @@ def validate_deploy_steps(task):
@utils.fail_on_error(utils.deploying_error_handler,
_("Unexpected error when processing next deploy step"))
_("Unexpected error when processing next deploy step"),
traceback=True)
@task_manager.require_exclusive_lock
def continue_node_deploy(task):
"""Continue deployment after finishing an async deploy step.

View File

@ -228,6 +228,11 @@ def set_node_cleaning_steps(task, disable_ramdisk=False):
driver_internal_info['clean_steps'] = _validate_user_clean_steps(
task, steps, disable_ramdisk=disable_ramdisk)
LOG.debug('List of the steps for %(type)s cleaning of node %(node)s: '
'%(steps)s', {'type': 'manual' if manual_clean else 'automated',
'node': node.uuid,
'steps': driver_internal_info['clean_steps']})
node.clean_step = {}
driver_internal_info['clean_step_index'] = None
node.driver_internal_info = driver_internal_info
@ -365,6 +370,10 @@ def set_node_deployment_steps(task, reset_current=True, skip_missing=False):
driver_internal_info = node.driver_internal_info
driver_internal_info['deploy_steps'] = _get_all_deployment_steps(
task, skip_missing=skip_missing)
LOG.debug('List of the deploy steps for node %(node)s: '
'%(steps)s', {'node': node.uuid,
'steps': driver_internal_info['deploy_steps']})
if reset_current:
node.deploy_step = {}
driver_internal_info['deploy_step_index'] = None