v2.0.8¶
Release Date¶
2026-04-21
Summary¶
v2.0.8 is a bug-fix and UX release. It corrects four silent data-collection failures in the Arista EOS live topology collection pipeline and introduces a grouped-by-domain intent list view that organises all intents into collapsible domain panels for easier at-a-glance navigation.
Added¶
- Grouped intent view — a new
/plugins/intent-networking/intents/grouped/page groups all intents into collapsible domain panels (Layer 2, Layer 3, MPLS/SP, Data Centre, Security, WAN/SD-WAN, Wireless, Cloud, QoS, Multicast, Management, Reachability, Service). Each domain panel is colour-coded with a Material Design icon and shows a condensed table of intent ID, type, tenant, status, approval state, and deployed date. A "Group by Domain" button is added to the standard intent list view; active filter querystrings are preserved when switching between views.
Fixed¶
-
Arista ARP table always empty — the ntc-templates library ships no
arista_eos_show_arp.textfsmtemplate, sonetmiko_send_commandreturned the raw command output as a plain string instead of a parsed list. The collection loop discarded any non-list result, resulting in an empty ARP panel on the topology device page. Fixed by preserving raw string output and adding a regex-based line parser in_normalise_arp()that extracts IP, age, MAC and interface columns from the plain text. -
VRF names missing for Arista —
_normalise_vrfs()looked for dictionary keynameto populate the VRF name field, but thearista_eos_show_vrf.textfsmtemplate emitsvrf. All VRF rows were normalised to an empty string. Fixed by addingor row.get("vrf")as a fallback. -
BGP neighbor IP and AS number missing for Arista —
_normalise_bgp()usedbgp_neighborandneighbor_as/remote_asas dictionary keys. The Arista TextFSM template emitsbgp_neighandneigh_asrespectively. All BGP panel rows appeared blank. Fixed by addingor row.get("bgp_neigh")andor row.get("neigh_as")fallbacks. -
Route prefix mask and next-hop missing for Arista — the
arista_eos_show_ip_route.textfsmtemplate emitsprefix_length(notmask) and declaresNEXT_HOPandINTERFACEasListvalues (Python lists, not strings)._normalise_routes()looked for amaskkey (found nothing) and placed the list object directly intonexthopandinterfacefields, producing[...]strings in the UI. Fixed by addingor row.get("prefix_length")for the mask and joining list values with", "in bothnexthopandinterface. -
Collection task silently skipped after any task failure —
nornir.run()calls in_collect_live_data()were missingon_failed=True, which causes Nornir to skip subsequent tasks on a host that was marked failed by a prior task. Addedon_failed=Trueto the collection loop to ensure all commands are attempted independently.
Upgrade¶
No database migrations are included in this release.
pip install --upgrade nautobot-app-intent-networking==2.0.8
sudo systemctl restart nautobot nautobot-worker nautobot-scheduler
Full changelog: v2.0.7...v2.0.8