{% extends 'generic/object.html' %} {% load helpers %} {% block subtitle %}
| Instance | {{ object.instance|linkify }} |
|---|---|
| Kind | {{ object.get_kind_display }}{% if object.is_rollback %} to revision {{ object.rollback_to }}{% endif %} |
| State | {{ object.get_state_display }} |
| Scope | {{ object.get_scope_display }}{% if object.selection %} ({{ object.selection|length }} objects){% endif %} |
| Message | {{ object.message|placeholder }} |
| Authors of the changes | {{ object.authors|join:", "|placeholder }} |
| Approved by | {{ object.approved_by|placeholder }}{% if object.approved_at %} ({{ object.approved_at|isodatetime:"minutes" }}){% endif %} |
| Plan hash | {{ object.plan_hash|truncatechars:20 }} |
| Started / finished | {{ object.started|isodatetime:"minutes"|placeholder }} / {{ object.finished|isodatetime:"minutes"|placeholder }} |
| Duration | {{ timing.duration_text }} for {{ timing.ops }} operation{{ timing.ops|pluralize }} |
| Expected duration | about {{ timing.expected_text }} for {{ timing.ops }} operation{{ timing.ops|pluralize }} ({{ timing.base_text }} base plus {{ timing.per_op|floatformat:2 }} s per operation, {% if timing.measured %}from the recent deploys of this instance{% else %}cautious estimate, no earlier deploy with many operations yet{% endif %}); time limit of the job {{ timing.timeout_text }} |
| Job | {% if object.job %}{{ object.job }}{% else %}—{% endif %} |
| Revision | {% if object.revision %}{{ object.revision|linkify }}{% else %}—{% endif %} |
| Discovery | {{ object.result.discovery.status }}: {{ object.result.discovery.message }} |
| Bake agents | {{ object.result.bake.status }}: {{ object.result.bake.message }} |
| Activation | {{ object.result.activation.status }}: {{ object.result.activation.message }} |
| Activation | not by this deploy (Activate after deploy was off) |
| Verdict | {{ object.gate.verdict }} |
|---|---|
| Hosts in last revision | {{ object.gate.host_count }} |
| Desired hosts | {{ object.gate.desired_count }} |
| Plan | {% for k, v in object.counts.items %}{% if v %}{{ v }} {{ k }} {% endif %}{% endfor %} |
| {{ reason }} | |
| {{ note }} | |
{% if link.1 %}{{ link.0 }}{% else %}{{ link.0 }}{% endif %} | {% for m in msgs %} {{ m }} {% endfor %} |
{% if link.1 %}{{ link.0 }}{% else %}{{ link.0 }}{% endif %} | {% for m in msgs %} {{ m }} {% endfor %} |
| Operation | Target | Object | Details | Result |
|---|---|---|---|---|
| {{ op.kind }} | {{ op.target }} |
{% if op.object_ref %}{{ op.object_ref }}{% endif %} |
{% if op.kind == 'update' %}{% include 'netbox_checkmk_sync/inc/diff.html' with diff=op.data.diff %}
{% elif op.kind == 'move' %}{{ op.data.from }} → {{ op.data.to }}
{% elif op.kind == 'rename' %}{{ op.data.old_name }} → {{ op.target }}
{% elif op.kind == 'create' %}folder {{ op.data.folder }}, {{ op.address }}
{% elif op.kind == 'orphan' %}mark as orphaned, deletion on {{ op.data.deletion_on }}
{% elif op.kind == 'release' %} hand back to manual configuration; the host stays {% include 'netbox_checkmk_sync/inc/diff.html' with diff=op.data.diff %}
{% elif op.kind == 'delete' %}folder {{ op.data.folder }}
{% elif op.kind == 'cluster' %}cluster host, nodes {{ op.data.nodes|join:", " }}, folder {{ op.data.folder }}
{% elif op.kind == 'nodes' %}nodes {{ op.data.from|join:", "|default:"—" }} → {{ op.data.nodes|join:", " }}
{% elif op.kind == 'contact_group' %}{{ op.data.alias }}
{% elif op.kind == 'contact_group_delete' %}no longer needed
{% elif op.kind == 'tag_group' %}{{ op.data.action }}: {% for t in op.data.group.tags %}{{ t.id }}{% if not forloop.last %}, {% endif %}{% endfor %}
{% elif op.kind == 'tag_group_remove' %}{% if op.data.action == 'delete' %}delete the group{% else %}remove {{ op.data.removed|join:", " }}{% endif %}{% if op.data.in_use %} (still in use: {% for t, hosts in op.data.in_use.items %}{{ t }} on {{ hosts|length }} hosts {% endfor %}){% endif %}
{% elif op.kind == 'user' %}{% if op.data.action == 'create' %}create without login ({{ op.data.email }}), groups {{ op.data.groups|join:", " }}{% else %}{% if op.data.added %}add {{ op.data.added|join:", " }} {% endif %}{% if op.data.removed %}remove {{ op.data.removed|join:", " }}{% endif %}{% endif %}
{% elif op.kind == 'notification_rule' %}{{ op.data.action }} the notification rule for this team
{% elif op.kind == 'notification_rule_delete' %}delete notification rule {{ op.data.rule_id }}
{% elif op.kind == 'rule' %}{{ op.data.action }}{% if op.data.rule %} rule in {{ op.data.rule.ruleset }}{% endif %}
{% elif op.kind == 'downtime' %}{% if op.data.action == 'set' %}set a downtime (status offline/failed){% else %}remove the downtime{% endif %}{% endif %}
|
{% if op.result %} {% if op.result.status == 'ok' %}ok {% elif op.result.status == 'failed' %}failed {% elif op.result.status == 'deferred' %}deferred {% else %}{{ op.result.status }}{% endif %} {{ op.result.message }} {% else %}—{% endif %} |
| Nothing to do: Checkmk already matches {% if object.is_rollback %}the target revision{% else %}NetBox{% endif %} for this scope. | ||||