{# docker/swarm.html — Swarm topology: services, replica health, nodes, placement #}
{% extends "base.html" %}
{% from "_macros.html" import crumbs %}
{% block title %}Swarm — Docker — Steward{% endblock %}
{% block breadcrumb %}{{ crumbs([("Docker", "/plugins/docker/"), ("Swarm", "")]) }}{% endblock %}
{% block content %}
Swarm
{% if swarms %}
{% for g in swarms %}
Swarm
reported by {{ g.managers | length }} manager{{ 's' if g.managers | length != 1 }} · {{ g.managers | join(", ") }}
{# ── Services ─────────────────────────────────────────────────────────── #}
| Service | Mode | Replicas | Image | Placement | Task failures |
{% for s in g.services %}
| {{ s.name }} |
{{ s.mode }} |
{{ s.running }}/{{ s.desired }}
|
{{ s.image or "—" }} |
{% for p in s.placement %}{{ p.node }} ({{ p.running }}){% if not loop.last %}, {% endif %}{% else %}—{% endfor %}
|
{% include "docker/_swarm_failures.html" %}
{%- if not s.tasks_known %}—
{%- elif not (s.crash_looping or s.failures_24h or (s.last_error and s.state != 'healthy')) %}none in 24h{% endif %}
|
{% else %}
| No services in this swarm. |
{% endfor %}
{# ── Nodes ────────────────────────────────────────────────────────────── #}
| Node | Role | Availability | Status |
{% for n in g.nodes %}
|
{{ n.hostname or n.node_id }}
{% if n.leader %}leader{% endif %}
|
{{ n.role }} |
{{ n.availability }} |
{{ n.status }}
|
{% else %}
| No nodes reported. |
{% endfor %}
{% endfor %}
{% else %}
No Swarm topology reported. A Steward host agent running on a Swarm
manager reports services, nodes, and task placement here —
workers and non-swarm hosts contribute only their local containers.
{% endif %}
{% endblock %}