v2.0¶
Release Date¶
2026-04-06
Summary¶
v2.0 is a major release that replaces the pyATS/Genie verification engine with NUTS (Network Unit Testing System), adds a fully redesigned verification UI, introduces bulk intent actions, ships complete Jinja2 template coverage across 847 production templates for 6 vendor platforms, and expands live topology collection to all 7 supported platforms. The verification subsystem is now entirely NAPALM/Netmiko-based — no pyATS dependency is required.
Breaking Changes¶
- pyATS/Genie removed. The
[extended]extra no longer installs pyATS. If you were usingnautobot-app-intent-networking[extended], switch tonautobot-app-intent-networking[nuts]. TheNutsVerifierclass replacesPyATSVerifier. - Migration
0014_replace_pyats_with_nutsis required. Runnautobot-server post_upgradeafter upgrading — this migration converts existing pyATS verification fields to the NUTS schema. - Verification YAML schema change. The
verification.testsblock now expects NUTS test bundle definitions (see Extended Verification).
Added¶
- NUTS verification engine — replaces pyATS/Genie with the Network Unit Testing System. NUTS uses NAPALM and Netmiko for multi-vendor device-state validation supporting 20+ built-in test classes (interfaces, LLDP/CDP neighbor counts, BGP neighbors and sessions, VLANs, startup/running config diff, users) across 70+ network platforms.
- Verification detail page — new
VerificationResultDetailview with Bootstrap 3 panels, per-device grouping, NUTS outcome parsing, expandable check rows, and a colour-coded pass/fail/warning breakdown. - Dashboard NUTS panel — verification results on the main dashboard show per-check rows with expandable detail, contextual error summaries, device name, and target extracted from NUTS test IDs.
- Bulk intent actions — the intent list page now provides four bulk action buttons: Dry-run, Preview, Deploy, and Validate. All four operate on the full current query (respecting any active filters) and enqueue the appropriate Nautobot Job.
- 847 Jinja2 templates — complete production template coverage across 6 vendor platforms (Cisco IOS-XE, IOS-XR, NX-OS, Juniper JunOS, Aruba AOS-CX, Arista EOS) for every intent type including stale-config removal variants.
- Multi-vendor live topology collection — the topology viewer's on-hover live data panel now supports all 7 platforms: Arista EOS, Cisco IOS-XE, Cisco IOS-XR, Cisco NX-OS, Juniper JunOS, Nokia SR OS, and Aruba AOS-CX. ARP tables, routing tables, VRFs, and BGP neighbour states are collected via Netmiko.
- 141 intent types — 7 new intent types added:
mgmt_motd,mgmt_netconf,mgmt_dhcp_server,mgmt_global_config,fw_rule,mgmt_lldp_cdp, andmgmt_snmp. nuts_error_summary,nuts_test_label,nuts_device,nuts_context,nuts_outcometemplate filters — custom template tags that parse raw NUTS test IDs and detail strings into human-readable labels.
Fixed¶
- Skipped NUTS tests no longer inflate failure counts — tests skipped because optional fields (
mac_address,mtu,speed) are absent fromtest_dataare now excluded from the checks list rather than being reported as failures. SimpleInventoryreplacesDictInventoryin live topology Nornir initialisation —DictInventoryis not registered in the installed Nornir distribution; the live collection now writes temporaryhosts.yaml/defaults.yamlfiles and passes their paths toSimpleInventory.- Hadolint / Dockerfile quality — added
SHELL ["/bin/bash", "-o", "pipefail", "-c"], double-quoted all shell variables, added--no-cache-dirtopip install, and consolidated consecutiveRUNlayers. - pylint 10.00/10 — removed stale
no-self-usedisable, fixed implicit string concatenations, suppressedtoo-many-return-statementsfor_platform_commandsdispatcher. - ruff / djlint / hadolint clean — all linting tools report zero errors.
Upgrade¶
pip install --upgrade nautobot-app-intent-networking==2.0.0
nautobot-server post_upgrade
sudo systemctl restart nautobot nautobot-worker nautobot-scheduler
pyATS removal
If your environment had pyats or genie installed as part of the [extended] extra, you can safely remove them. The new [nuts] extra installs nuts>=3.5.0 and pytest-json-report>=1.5.0.
Verification YAML migration
Existing intents that reference the old verification.pyats_tests block must be updated to use verification.tests with NUTS test bundle definitions. See the Getting Started guide for the new schema.
Database migration
Migration 0014 is non-destructive — existing verification results are preserved. The migration adds new fields for NUTS output storage and removes the pyATS-specific fields.