{# ansible/run_detail.html — one run (#5330): a verdict line (how it ended, how long, when, who started it, what it did across its hosts), what it ran with, each host's result in words, worst first, then its output. #} {% extends "base.html" %} {% from "_macros.html" import crumbs, page_header, status_badge %} {% from "ansible/_tabs.html" import ansible_tabs %} {% block title %}{{ row.title }} — Steward{% endblock %} {% block breadcrumb %}{{ crumbs([("Ansible", "/ansible/"), (row.title, "")]) }}{% endblock %} {% macro words(parts) -%} {% for text, tone in parts %}{% if not loop.first %} · {% endif %}{% if tone %}{{ text }}{% else %}{{ text }}{% endif %}{% endfor %} {%- endmacro %} {% block section_tabs %}{{ ansible_tabs("runs") }}{% endblock %} {% block content %} {% call page_header(row.title) %} {% if run.status.value in ("running", "queued") and session.user_role in ("operator", "admin") %}
{{ csrf_field() }}
{% endif %} {% if session.user_role in ("operator", "admin") %} Run again {% endif %} Download log {% endcall %}

{{- status_badge(run.status) }} {%- if row.check %} dry run{% endif %} {%- if row.duration_s is not none %} {% if run.finished_at %}in{% else %}for{% endif %} {{ row.duration_s|duration }}{% if not run.finished_at %} so far{% endif %}{% endif %} · started {{ run.started_at|ago }} · by {% if origin.url %}{{ origin.text }}{% else %}{{ origin.text }}{% endif %} {%- if row.recap %} · {{ words(row.recap) }}{% endif -%}

Playbook
{{ run.playbook_path }} from {{ run.source_name }}
On
{{ row.scope_label }}
{% if run.params %} {% if run.params.limit %}
Limit
{{ run.params.limit }}
{% endif %} {% if run.params.tags %}
Tags
{{ run.params.tags }}
{% endif %} {% if run.params.extra_vars %}
Extra vars
{{ run.params.extra_vars | join(", ") }}
{% endif %} {% endif %}
{% if hosts %}

Hosts worst first

{% for host, parts in hosts %} {% endfor %}
HostResult
{{ host }}{{ words(parts) if parts else '—' }}
{% endif %} {% if run.results and run.results.failures %}

What failed

{{ run.results.failures | join("\n") }}
{% endif %}

Output

{% if run.status.value in ("running", "queued") %}
{{ run.output or "" }}

Streaming…

{% else %}
{{ run.output or "(no output)" }}
{% endif %}
{% endblock %}