linear strategy, show templated task name on start (#83473)

we only templated in some cases but when queueing we could get an untemplated name for the 'on start' event.
pull/83489/head
Brian Coca 5 months ago committed by GitHub
parent 339452c105
commit 0d28705ce5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,2 @@
bugfixes:
- linear strategy now provides a properly templated task name to the v2_runner_on_started callback event.

@ -211,30 +211,21 @@ class StrategyModule(StrategyBase):
skip_rest = True skip_rest = True
break break
run_once = templar.template(task.run_once) or action and getattr(action, 'BYPASS_HOST_LOOP', False) run_once = action and getattr(action, 'BYPASS_HOST_LOOP', False) or templar.template(task.run_once)
try:
task.name = to_text(templar.template(task.name, fail_on_undefined=False), nonstring='empty')
except Exception as e:
display.debug(f"Failed to templalte task name ({task.name}), ignoring error and continuing: {e}")
if (task.any_errors_fatal or run_once) and not task.ignore_errors: if (task.any_errors_fatal or run_once) and not task.ignore_errors:
any_errors_fatal = True any_errors_fatal = True
if not callback_sent: if not callback_sent:
display.debug("sending task start callback, copying the task so we can template it temporarily")
saved_name = task.name
display.debug("done copying, going to template now")
try:
task.name = to_text(templar.template(task.name, fail_on_undefined=False), nonstring='empty')
display.debug("done templating")
except Exception:
# just ignore any errors during task name templating,
# we don't care if it just shows the raw name
display.debug("templating failed for some reason")
display.debug("here goes the callback...")
if isinstance(task, Handler): if isinstance(task, Handler):
self._tqm.send_callback('v2_playbook_on_handler_task_start', task) self._tqm.send_callback('v2_playbook_on_handler_task_start', task)
else: else:
self._tqm.send_callback('v2_playbook_on_task_start', task, is_conditional=False) self._tqm.send_callback('v2_playbook_on_task_start', task, is_conditional=False)
task.name = saved_name
callback_sent = True callback_sent = True
display.debug("sending task start callback")
self._blocked_hosts[host.get_name()] = True self._blocked_hosts[host.get_name()] = True
self._queue_task(host, task, task_vars, play_context) self._queue_task(host, task, task_vars, play_context)

@ -16,5 +16,11 @@ grep -e "${EXPECTED_REGEX}" "${OUTFILE}"
# test connection tracking # test connection tracking
EXPECTED_CONNECTION='{"testhost":{"ssh":4}}' EXPECTED_CONNECTION='{"testhost":{"ssh":4}}'
OUTPUT_TAIL=$(tail -n5 ${OUTFILE} | tr -d '[:space:]') OUTPUT_TAIL=$(tail -n5 ${OUTFILE} | tr -d '[:space:]')
echo "Checking for connection strin ${OUTPUT_TAIL} in stdout."
[ "${EXPECTED_CONNECTION}" == "${OUTPUT_TAIL}" ] [ "${EXPECTED_CONNECTION}" == "${OUTPUT_TAIL}" ]
echo $? echo $?
# check variables are interpolated in 'started'
UNTEMPLATED_STARTED="^.*\[started .*{{.*}}.*$"
echo "Checking we dont have untemplated started in stdout."
grep -e "${UNTEMPLATED_STARTED}" "${OUTFILE}" || exit 0

Loading…
Cancel
Save