summaryrefslogtreecommitdiff
path: root/ironic/conductor/deployments.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/conductor/deployments.py')
-rw-r--r--ironic/conductor/deployments.py21
1 files changed, 12 insertions, 9 deletions
diff --git a/ironic/conductor/deployments.py b/ironic/conductor/deployments.py
index 3bda75b23..780b302c5 100644
--- a/ironic/conductor/deployments.py
+++ b/ironic/conductor/deployments.py
@@ -70,10 +70,6 @@ def start_deploy(task, manager, configdrive=None, event='deploy'):
:param event: event to process: deploy or rebuild.
"""
node = task.node
- # Record of any pre-existing agent_url should be removed
- # except when we are in fast track conditions.
- if not utils.is_fast_track(task):
- utils.remove_agent_url(node)
if event == 'rebuild':
# Note(gilliard) Clear these to force the driver to
@@ -102,7 +98,7 @@ def start_deploy(task, manager, configdrive=None, event='deploy'):
task.driver.power.validate(task)
task.driver.deploy.validate(task)
utils.validate_instance_info_traits(task.node)
- conductor_steps.validate_deploy_templates(task)
+ conductor_steps.validate_deploy_templates(task, skip_missing=True)
except exception.InvalidParameterValue as e:
raise exception.InstanceDeployFailure(
_("Failed to validate deploy or power info for node "
@@ -127,8 +123,7 @@ def start_deploy(task, manager, configdrive=None, event='deploy'):
def do_node_deploy(task, conductor_id=None, configdrive=None):
"""Prepare the environment and deploy a node."""
node = task.node
- utils.wipe_deploy_internal_info(node)
- utils.del_secret_token(node)
+ utils.wipe_deploy_internal_info(task)
try:
if configdrive:
if isinstance(configdrive, dict):
@@ -273,6 +268,13 @@ def do_next_deploy_step(task, step_index, conductor_id):
_("Failed to deploy. Exception: %s") % e, traceback=True)
return
+ if task.node.provision_state == states.DEPLOYFAIL:
+ # NOTE(dtantsur): some deploy steps do not raise but rather update
+ # the node and return. Take them into account.
+ LOG.debug('Node %s is in error state, not processing '
+ 'the remaining deploy steps', task.node)
+ return
+
if ind == 0:
# We've done the very first deploy step.
# Update conductor_affinity to reference this conductor's ID
@@ -291,7 +293,8 @@ def do_next_deploy_step(task, step_index, conductor_id):
LOG.info('Deploy step %(step)s on node %(node)s being '
'executed asynchronously, waiting for driver.',
{'node': node.uuid, 'step': step})
- task.process_event('wait')
+ if task.node.provision_state != states.DEPLOYWAIT:
+ task.process_event('wait')
return
elif result is not None:
# NOTE(rloo): This is an internal/dev error; shouldn't happen.
@@ -308,7 +311,7 @@ def do_next_deploy_step(task, step_index, conductor_id):
# Finished executing the steps. Clear deploy_step.
node.deploy_step = None
- utils.wipe_deploy_internal_info(node)
+ utils.wipe_deploy_internal_info(task)
node.save()
_start_console_in_deploy(task)