diff options
Diffstat (limited to 'ironic/conductor/steps.py')
-rw-r--r-- | ironic/conductor/steps.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/ironic/conductor/steps.py b/ironic/conductor/steps.py index 3fb539e34..09ecf5fa2 100644 --- a/ironic/conductor/steps.py +++ b/ironic/conductor/steps.py @@ -87,6 +87,11 @@ def is_equivalent(step1, step2): and step1.get('step') == step2.get('step')) +def find_step(steps, step): + """Find an identical step in the list of steps.""" + return next((x for x in steps if is_equivalent(x, step)), None) + + def _get_steps(task, interfaces, get_method, enabled=False, sort_step_key=None): """Get steps for task.node. @@ -299,19 +304,21 @@ def _get_all_deployment_steps(task): return _sorted_steps(steps, _deploy_step_key) -def set_node_deployment_steps(task): +def set_node_deployment_steps(task, reset_current=True): """Set up the node with deployment step information for deploying. Get the deploy steps from the driver. + :param reset_current: Whether to reset the current step to the first one. :raises: InstanceDeployFailure if there was a problem getting the deployment steps. """ node = task.node driver_internal_info = node.driver_internal_info driver_internal_info['deploy_steps'] = _get_all_deployment_steps(task) - node.deploy_step = {} - driver_internal_info['deploy_step_index'] = None + if reset_current: + node.deploy_step = {} + driver_internal_info['deploy_step_index'] = None node.driver_internal_info = driver_internal_info node.save() |