diff options
author | Zuul <zuul@review.opendev.org> | 2020-06-19 13:50:27 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2020-06-19 13:50:27 +0000 |
commit | a2ad31ddef6a3e19f608a5ee0540f8bacc95ec92 (patch) | |
tree | 1034f8fa6e74728b48f17ead9a8ccfabd85d8ad9 /ironic/conductor | |
parent | f266971b1301876c75d9400ae8e9ce4cab766998 (diff) | |
parent | 59091639249a5b65348c3699fdb79372c33b70fe (diff) | |
download | ironic-a2ad31ddef6a3e19f608a5ee0540f8bacc95ec92.tar.gz |
Merge "Fix agent token and URL handling during fast-track deployment"
Diffstat (limited to 'ironic/conductor')
-rw-r--r-- | ironic/conductor/cleaning.py | 25 | ||||
-rw-r--r-- | ironic/conductor/deployments.py | 9 | ||||
-rw-r--r-- | ironic/conductor/manager.py | 4 | ||||
-rw-r--r-- | ironic/conductor/utils.py | 49 |
4 files changed, 32 insertions, 55 deletions
diff --git a/ironic/conductor/cleaning.py b/ironic/conductor/cleaning.py index e02abdb36..9a923abf7 100644 --- a/ironic/conductor/cleaning.py +++ b/ironic/conductor/cleaning.py @@ -213,19 +213,7 @@ def do_next_clean_step(task, step_index): # Clear clean_step node.clean_step = None - driver_internal_info = node.driver_internal_info - driver_internal_info['clean_steps'] = None - driver_internal_info.pop('clean_step_index', None) - driver_internal_info.pop('cleaning_reboot', None) - driver_internal_info.pop('cleaning_polling', None) - - # Remove agent_url - if not utils.fast_track_able(task): - driver_internal_info.pop('agent_url', None) - driver_internal_info.pop('agent_secret_token', None) - driver_internal_info.pop('agent_secret_token_pregenerated', None) - - node.driver_internal_info = driver_internal_info + utils.wipe_cleaning_internal_info(task) node.save() try: task.driver.deploy.tear_down_cleaning(task) @@ -273,15 +261,6 @@ def do_node_clean_abort(task, step_name=None): node.last_error = last_error node.clean_step = None - info = node.driver_internal_info - # Clear any leftover metadata about cleaning - info.pop('clean_step_index', None) - info.pop('cleaning_reboot', None) - info.pop('cleaning_polling', None) - info.pop('skip_current_clean_step', None) - info.pop('agent_url', None) - info.pop('agent_secret_token', None) - info.pop('agent_secret_token_pregenerated', None) - node.driver_internal_info = info + utils.wipe_cleaning_internal_info(task) node.save() LOG.info(info_message) diff --git a/ironic/conductor/deployments.py b/ironic/conductor/deployments.py index 3bda75b23..75308482d 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 @@ -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): @@ -308,7 +303,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) diff --git a/ironic/conductor/manager.py b/ironic/conductor/manager.py index b63d5412e..9cdf25558 100644 --- a/ironic/conductor/manager.py +++ b/ironic/conductor/manager.py @@ -1025,11 +1025,9 @@ class ConductorManager(base_manager.BaseConductorManager): # But we do need to clear the instance-related fields. node.instance_info = {} node.instance_uuid = None + utils.wipe_deploy_internal_info(task) driver_internal_info = node.driver_internal_info - driver_internal_info.pop('agent_secret_token', None) - driver_internal_info.pop('agent_secret_token_pregenerated', None) driver_internal_info.pop('instance', None) - driver_internal_info.pop('clean_steps', None) driver_internal_info.pop('root_uuid_or_disk_id', None) driver_internal_info.pop('is_whole_disk_image', None) driver_internal_info.pop('deploy_boot_mode', None) diff --git a/ironic/conductor/utils.py b/ironic/conductor/utils.py index 35e2c94fc..4b994db86 100644 --- a/ironic/conductor/utils.py +++ b/ironic/conductor/utils.py @@ -444,11 +444,15 @@ def cleaning_error_handler(task, msg, tear_down_cleaning=True, task.process_event('fail', target_state=target_state) -def wipe_deploy_internal_info(node): +def wipe_deploy_internal_info(task): """Remove temporary deployment fields from driver_internal_info.""" - info = node.driver_internal_info - info.pop('agent_secret_token', None) - info.pop('agent_secret_token_pregenerated', None) + info = task.node.driver_internal_info + if not fast_track_able(task): + info.pop('agent_secret_token', None) + info.pop('agent_secret_token_pregenerated', None) + # Remove agent_url since it will be re-asserted + # upon the next deployment attempt. + info.pop('agent_url', None) # Clear any leftover metadata about deployment. info['deploy_steps'] = None info.pop('agent_cached_deploy_steps', None) @@ -457,10 +461,24 @@ def wipe_deploy_internal_info(node): info.pop('deployment_polling', None) info.pop('skip_current_deploy_step', None) info.pop('steps_validated', None) - # Remove agent_url since it will be re-asserted - # upon the next deployment attempt. - info.pop('agent_url', None) - node.driver_internal_info = info + task.node.driver_internal_info = info + + +def wipe_cleaning_internal_info(task): + """Remove temporary cleaning fields from driver_internal_info.""" + info = task.node.driver_internal_info + if not fast_track_able(task): + info.pop('agent_url', None) + info.pop('agent_secret_token', None) + info.pop('agent_secret_token_pregenerated', None) + info['clean_steps'] = None + info.pop('agent_cached_clean_steps', None) + info.pop('clean_step_index', None) + info.pop('cleaning_reboot', None) + info.pop('cleaning_polling', None) + info.pop('skip_current_clean_step', None) + info.pop('steps_validated', None) + task.node.driver_internal_info = info def deploying_error_handler(task, logmsg, errmsg=None, traceback=False, @@ -503,7 +521,7 @@ def deploying_error_handler(task, logmsg, errmsg=None, traceback=False, # Clear deploy step; we leave the list of deploy steps # in node.driver_internal_info for debugging purposes. node.deploy_step = {} - wipe_deploy_internal_info(node) + wipe_deploy_internal_info(task) if cleanup_err: node.last_error = cleanup_err @@ -1047,19 +1065,6 @@ def add_secret_token(node, pregenerated=False): node.driver_internal_info = i_info -def del_secret_token(node): - """Deletes the IPA agent secret token. - - Removes the agent token secret from the driver_internal_info field - from the Node object. - - :param node: Node object - """ - i_info = node.driver_internal_info - i_info.pop('agent_secret_token', None) - node.driver_internal_info = i_info - - def is_agent_token_present(node): """Determines if an agent token is present upon a node. |