{# SPDX-License-Identifier: Apache-2.0 #} {# Copyright (C) 2026 Marcin Zieba #} {% extends 'base/layout.html' %} {% block title %}Sync from NSO: {{ device }}{% endblock %} {% block content %}
Sync from NSO preview

The device wins. Sync changes only NetBox, only rows that NetBox does not own, and schedules no device delivery. Nothing changes until you confirm.

{% if error %} {% endif %} {% if snapshots %}
{% for snapshot in snapshots %} {{ snapshot.read_state.family }} revision {{ snapshot.revision }}, observed {{ snapshot.observed_at|date:"c" }} {% endfor %}
{% endif %} {% if plan %}
NetBox changes {{ changes|length }}
{% for step in changes %} {% empty %} {% endfor %}
ScopeActionObjectChange
{{ step.scope }} {{ step.action }} {{ step.target }} {{ step.detail }}
No NetBox change.
{% if statuses %}
Overlay status {{ statuses|length }}
    {% for step in statuses %}
  • {{ step.scope }} {{ step.target }}: {{ step.detail }}
  • {% endfor %}
{% endif %}
Blockers {{ plan.blockers|length }}
{% for blocker in plan.blockers %} {% empty %} {% endfor %}
ScopeRowReason
{{ blocker.scope }}{{ blocker.target }}{{ blocker.reason }}
No blocker.

Sync skips a blocked row. The other rows in the plan still run.

{% if plan.notes %}
    {% for note in plan.notes %}
  • {{ note.scope }} {{ note.target }}: {{ note.reason }}
  • {% endfor %}
{% endif %} {% endif %}
{% csrf_token %} {% for name, value in selection_fields %}{% endfor %} {% if plan %}{% endif %} {% for choice in primary_choices %}
Preview again after you change this.
{% endfor %}
Cancel {% if plan %}Plan digest {{ plan.digest|slice:":16" }}{% endif %}
{% endblock %}