{% extends "base.html" %} {% block content %}

Runner Details

{{ runner_info.runner_id }}
Back to Runners
Runner Context
{% if context %}
Runner Class {{ context.runner_cls }}
Runner ID {{ context.runner_id }}
Hostname {{ context.hostname }}
Process ID {{ context.pid }}
Thread ID {{ context.thread_id }}
{% else %}
Runner context not available
{% endif %}
{% if parent_context %}
Parent Context
Parent Runner Class {{ parent_context.runner_cls }}
Parent Runner ID {{ parent_context.runner_id }}
Parent Hostname {{ parent_context.hostname }}
Parent PID {{ parent_context.pid }}
Parent Thread ID {{ parent_context.thread_id }}
{% endif %}
Heartbeat Status
Created At {{ runner_info.creation_time.strftime('%Y-%m-%d %H:%M:%S') }}
Last Heartbeat {{ runner_info.last_heartbeat.strftime('%Y-%m-%d %H:%M:%S') }} {% if heartbeat_age.is_stale %} Stale {% else %} Fresh {% endif %}
Time Since Last Heartbeat {{ heartbeat_age.seconds }}s ({{ heartbeat_age.minutes }}m)
Runner Age {% set age_seconds = age.total_seconds %} {% if age_seconds < 60 %} {{ age.seconds }}s {% elif age_seconds < 3600 %} {{ age.minutes }}m {{ (age.seconds % 60) }}s {% else %} {{ (age.hours)|int }}h {{ (age.minutes % 60) }}m {% endif %}
Atomic Service Status
{% if execution_stats %} {% else %} {% endif %}
Eligible to Run {% if runner_info.allow_to_run_atomic_service %} Yes {% else %} No {% endif %}
Last Service Start {{ execution_stats.last_start.strftime('%Y-%m-%d %H:%M:%S') }}
Last Service End {{ execution_stats.last_end.strftime('%Y-%m-%d %H:%M:%S') }}
Last Execution Duration {{ execution_stats.duration_seconds|round(2) }}s
No atomic service execution history available
{% endblock %}