{% extends "base.html" %} {% block title %}Runbooks โ€” Ops Hub{% endblock %} {% block extra_css %} {% endblock %} {% block content %} โ† Ops Hub

๐Ÿ“‹ Runbooks

Automated Remediation ยท Execution History โ€” {{ classification }}

{% set runbooks = data.runbooks %} {% set history = data.history %} {% set summary = data.summary %}
{{ summary.get('total_runbooks', 'โ€”') }}
Total Runbooks
{{ summary.get('auto_runbooks', 0) }}
Auto-Executable
{{ summary.get('executions_24h', 0) }}
Executions (24h)
{% if summary.get('success_rate') is not none %}{{ summary.success_rate|round(0)|int }}%{% else %}โ€”{% endif %}
Success Rate

๐Ÿ“š Runbook Library

{% if runbooks %} {% for rb in runbooks[:8] %}
{{ rb.get('name', rb.get('runbook_name', '?')) }}
{{ rb.get('description', '') }}
{% if rb.get('trigger_conditions') %} auto {% endif %} {% if rb.get('category') %}{{ rb.category }}{% endif %} {% if rb.get('step_count') %}{{ rb.step_count }} steps{% endif %}
{% endfor %} {% else %}

No runbooks found.

{% endif %}

๐Ÿ• Execution History

{% if history %} {% for exec in history[:10] %} {% set s = exec.get('status','unknown') %}
{{ 'โœ“' if s == 'success' else ('โœ—' if s == 'failed' else 'โ–ถ') }} {{ exec.get('runbook_name', exec.get('name', '?')) }} {% if exec.get('duration_ms') %} {{ exec.duration_ms }}ms {% endif %} {{ exec.get('executed_at', exec.get('timestamp', '')) | string | truncate(16, True, '') }}
{% endfor %} View full JSON โ†’ {% else %}

No execution history.

{% endif %}
{% include "includes/iqe_query_widget.html" %} {% endblock %}