{% extends 'generic/object.html' %} {% load helpers %} {% load i18n %} {% block title %}{{ object }} - {% trans "Scope Reconciliation" %}{% endblock %} {% block extra_controls %} {% trans "Sync" %} {% endblock extra_controls %} {% block content %}
| {% trans "Include tags" %} | {{ payload.include_tags|join:", "|placeholder }} |
|---|---|
| {% trans "NetBox devices" %} | {{ payload.netbox_device_count }} |
| {% trans "In scope (collected)" %} | {{ payload.forward_in_scope_completed }} |
| {% trans "In scope (SNMP endpoints)" %} | {{ payload.forward_in_scope_endpoints }} |
| {% trans "Tagged but backfilled" %} | {{ payload.forward_tagged_backfilled }} {% if payload.netbox_present_backfilled %} {% blocktrans with count=payload.netbox_present_backfilled %}view {{ count }} tagged{% endblocktrans %} {% endif %} |
| {% trans "Out of scope (orphans)" %} | {% if payload.netbox_out_of_scope %} {{ payload.netbox_out_of_scope }} {% else %} 0 {% endif %} |
| {% trans "Empty orphan sites" %} | {% if payload.netbox_empty_orphan_site_count %} {{ payload.netbox_empty_orphan_site_count }} {% else %} 0 {% endif %} |
| {% trans "In scope, missing from NetBox" %} | {{ payload.forward_missing_in_netbox }} |
{% if payload.out_of_scope_absence.absent_from_snapshot %} {% blocktrans count counter=payload.out_of_scope_absence.absent_from_snapshot %}{{ counter }} gone from Forward{% plural %}{{ counter }} gone from Forward{% endblocktrans %} {% endif %} {% if payload.out_of_scope_absence.present_untagged %} {% blocktrans count counter=payload.out_of_scope_absence.present_untagged %}{{ counter }} in Forward but untagged{% plural %}{{ counter }} in Forward but untagged{% endblocktrans %} {% endif %} {% if payload.out_of_scope_absence.vendor_excluded %} {% blocktrans count counter=payload.out_of_scope_absence.vendor_excluded %}{{ counter }} custom-command source{% plural %}{{ counter }} custom-command source{% endblocktrans %} {% endif %}
{% if payload.out_of_scope_absence.present_untagged %}{% trans "Devices Forward still has but no longer reports under these tags. A Forward-side tag edit and a narrowed query look identical here — confirm in Forward before pruning." %}
{% endif %} {% endif %}{{ name }}{% blocktrans with shown=payload.out_of_scope_sample|length total=payload.netbox_out_of_scope %}Showing {{ shown }} of {{ total }}.{% endblocktrans %}
{% endif %} {% else %}{% trans "No out-of-scope devices." %}
{% endif %}| {% trans "Mode" %} | {% trans "Read only" %} |
|---|---|
| {% trans "Platforms with manufacturer" %} | {{ upgrade_reconciliation.platforms.with_manufacturer }} / {{ upgrade_reconciliation.platforms.total }} |
| {% trans "Platforms without manufacturer" %} | {{ upgrade_reconciliation.platforms.without_manufacturer }} |
| {% trans "Stale endpoint DeviceTypes" %} | {% if upgrade_reconciliation.stale_endpoint_device_types.candidate_count %} {{ upgrade_reconciliation.stale_endpoint_device_types.candidate_count }} {% else %} 0 {% endif %} |
| {% trans "DLM status" %} | {{ upgrade_reconciliation.dlm.status }} |
| {% trans "Software versions" %} | {{ upgrade_reconciliation.dlm.software_versions.total }} |
| {% trans "Versions without devices" %} | {{ upgrade_reconciliation.dlm.software_versions.without_devices }} |
| {% trans "Protected versions without devices" %} | {{ upgrade_reconciliation.dlm.software_versions.protected_without_devices }} |
| {% trans "Unreferenced version candidates" %} | {% if upgrade_reconciliation.dlm.software_versions.unreferenced_without_devices %} {{ upgrade_reconciliation.dlm.software_versions.unreferenced_without_devices }} {% else %} 0 {% endif %} |
| {% trans "CVEs" %} | {{ upgrade_reconciliation.dlm.cves.total }} |
| {% trans "CVEs with vulnerabilities" %} | {{ upgrade_reconciliation.dlm.cves.with_vulnerabilities }} |
| {% trans "CVEs with affected software" %} | {{ upgrade_reconciliation.dlm.cves.with_affected_software }} |
| {% trans "Unlinked CVEs" %} | {{ upgrade_reconciliation.dlm.cves.unlinked }} |
{{ item.manufacturer__name }} / {{ item.model }}{{ item.platform__name }} / {{ item.version }}{{ item.platform__name }} / {{ item.version }} ({{ item.protected_by }}){% trans "No post-upgrade review candidates." %}
{% endif %}{% trans "Why these in-scope devices were not freshly collected by Forward. This is a Forward collection-health signal, not a sync error — fix collection in Forward (rotate credentials for AUTHENTICATION_FAILED, check reachability for CONNECTION_TIMEOUT, finish onboarding for INCOMPLETE_SETUP)." %}
{{ reason }} |
{{ count }} |
|---|
{% trans "No backfilled devices in the latest snapshot." %}
{% endif %}{% trans "In NetBox but not freshly collected in the latest snapshot (serving last-known-good data). Days = how stale the served data is." %}
| {% trans "Device" %} | {% trans "Reason" %} | {% trans "Stale" %} |
|---|---|---|
{{ item.name }} |
{{ item.reason }} |
{% if item.stale_days is not None %}{% blocktrans count days=item.stale_days %}{{ days }} day{% plural %}{{ days }} days{% endblocktrans %}{% else %}—{% endif %} |
{% blocktrans with shown=payload.present_backfilled_detail_sample|length total=payload.netbox_present_backfilled %}Showing {{ shown }} of {{ total }}.{% endblocktrans %}
{% endif %} {% else %}{% trans "No backfilled devices in NetBox." %}
{% endif %}