{% extends "network/base.html" %} {% block title %}NetBox IPAM — Network Design Canvas{% endblock %} {% block content %} {% if airgap_mode %}
Air-Gap Mode: NetBox integration requires network access to an external NetBox instance and is unavailable in disconnected environments. Topology data can be imported/exported via JSON, draw.io, or Visio files instead.
{% endif %}
{% if cfg.configured %} Connected to {{ cfg.url }}{% if cfg.site_filter %}  •  Site filter: {{ cfg.site_filter }}{% endif %}{% if cfg.last_tested %}  •  Last tested: {{ cfg.last_tested[:19] }}{% endif %} {% else %} Not configured — enter your NetBox URL and API token below to begin. {% endif %}

⚙ Connection

Leave blank to keep existing token.

Cached Objects

{% set resources = [('device','Devices'),('ip_address','IP Addresses'),('vlan','VLANs'),('prefix','Prefixes'),('rack','Racks'),('circuit','Circuits')] %} {% for key, label in resources %} {% endfor %}
ResourceCount
{{ label }} {{ cached_counts.get(key, 0) }}

Import to Canvas

Pull from NetBox

{% for tab in ['devices','ips','vlans','prefixes','racks','circuits'] %} {% endfor %}

Sync Log

{% if sync_log %} {% for row in sync_log %} {% endfor %}
TimeDirectionResourceStatusInOutTopologyError
{{ (row.ran_at or '')[:19] }} {% if row.direction == 'pull' %}⬇ pull {% else %}⬆ push{% endif %} {{ row.resource or '—' }} {% if row.status == 'ok' %}✓ ok {% else %}⚠ {{ row.status }}{% endif %} {{ row.records_in or 0 }} {{ row.records_out or 0 }} {{ row.topology_id or '—' }} {{ row.error_msg or '' }}
{% else %}

No sync activity yet. Pull resources from NetBox to populate the log.

{% endif %}
{% endblock %} {% block scripts %} {% endblock %}