{% extends "base.html" %} {% from "_macros.html" import crumbs %} {% block title %}Ansible Schedules — Steward{% endblock %} {% block breadcrumb %}{{ crumbs([("Ansible", "/ansible/"), ("Schedules", "")]) }}{% endblock %} {% macro fmt_interval(secs) %} {%- set m = {300: "every 5 min", 3600: "hourly", 21600: "every 6h", 43200: "every 12h", 86400: "daily", 604800: "weekly"} -%} {{ m.get(secs, secs ~ "s") }} {% endmacro %} {% block content %}
{# ── Existing schedules ───────────────────────────────────────────────────── #} {% if not rows %}| Name | Playbook | Target | Interval | Last run | Next run | |
|---|---|---|---|---|---|---|
| {{ s.name }} | {{ s.source_name }} / {{ s.playbook_path }} | {{ s.inventory_scope }} | {{ fmt_interval(s.interval_seconds) }} | {% if s.last_error %} launch error {% elif row.last_run %} {% set sc = {"queued":"var(--text-dim)","running":"var(--yellow)","success":"var(--green)","failed":"var(--red)","interrupted":"var(--orange)","cancelled":"var(--orange)"}.get(row.last_run.status.value, "var(--text-muted)") %} {{ row.last_run.status.value }} · {{ s.last_run_at.strftime("%m-%d %H:%M") }} {% else %} never {% endif %} | {% if not s.enabled %}paused {% elif row.next_run %}{{ row.next_run.strftime("%m-%d %H:%M") }} {% else %}due now{% endif %} | Edit |