diff options
Diffstat (limited to 'ironic/conductor/deployments.py')
-rw-r--r-- | ironic/conductor/deployments.py | 21 |
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) |