Improve edge-case debugging for deployment and cleaning
* Log traceback in fail_on_error This is a last-resort error handler, it needs to log traceback. * Use an assertion when we expect a present list of steps * Log the freshly build list of steps. Change-Id: I8cd4cd330551b7bc9a44957e0d15c8b75c09c299
This commit is contained in:
parent
c57daacf62
commit
f6781aadfc
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user