Write JSONL iteratively, flush via chunked PG execute_values, skip mega raw in DB, and yield bgp_route rows instead of building a full list.
Co-authored-by: Cursor <cursoragent@cursor.com>
A defaulted field was inserted before required textfsm_command/vendor fields and broke collect startup.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip TextFSM for neighbor route tables (status vs plain, From, RD+VRF, heavy wraps); parse via callback and cover with live RR/VRF fixtures.
Co-authored-by: Cursor <cursoragent@cursor.com>
RR vpnv6 wrap lines with next-hop+metrics were collapsing ECMP legs; store raw_line_count/declared_total before DB truncate so collect stats stay accurate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the horizontal scrollbar in the viewport, sticky enable/title columns, and show selected/total (and unbound) counts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show collecting over paused schedule, enqueue sync so collect_running flips immediately, and expose export on metric sheets with a card layout for Commands.
Co-authored-by: Cursor <cursoragent@cursor.com>
Decouple heavy CLI parse via ParsePool, keep ECMP/multi-RD keys, and expose per-command CLI lines vs DB rows with raw.txt export.
Co-authored-by: Cursor <cursoragent@cursor.com>
IPv4/IPv6 neighbor in/out keep AF peers and peer-group expand, while top-level global activate is routed to ipv4 or ipv6 discover by address literal.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stamp local_as on peer/route/evpn results and discover (local_as, neighbor/vrf) pairs from config_bgp_peer so each router bgp process is collected separately.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add dual-lane READ vs RUN_TIMEOUT_CAP notes to .env.example and WEB.md so operators can raise the ~40min heavy cap.
Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid idle Session disconnect after heavy timeout, and separate SSH collect from batched Postgres persist via disk spool.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clear stuck collect_running without re-dispatching; finalize in-flight commands as failed with interrupted_by_restart.
Co-authored-by: Cursor <cursoragent@cursor.com>
Catalog previously only had VPNv4/VPNv6 route items; global ipv4/ipv6 discover requires empty vrf so VRF CE peers are not mixed in.
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply the same global peer-group member expand to address-family ipv4; keep VRF direct-only. Cover IPv4 wrapped neighbor routes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Batch sheets are keyed by metric_id, so all AF summaries land in one tab; stop inheriting the first profile title (VPNv4).
Co-authored-by: Cursor <cursoragent@cursor.com>
Shared aux CLIs (e.g. running-config bgp) now repeat per monitoring section; the trailing unique list still collapses duplicates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match live collect: include discover-backed aux CLIs in plan/export (and unbound sections); primary-only via include_aux=false.
Co-authored-by: Cursor <cursoragent@cursor.com>
Overwrite explicit aux from discover_select at load time; join VRF CE on vrf,neighbor and global neighbors on afi,neighbor to avoid cross-AF collisions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Discover and aux both use zte.config_bgp_peer; enrich remote_as/activate/route-maps from intent. Guard with tests so aux templates cannot introduce extra placeholders.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add an Aux column for each monitor item. Drop ip_route/ipv6_route as summary enrich aux so FIB stays a standalone collect profile. Export defaults to primary commands only.
Co-authored-by: Cursor <cursoragent@cursor.com>
When a monitoring item has no concrete CLI, export its command_template commented with # instead of omitting it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Plan enabled monitoring items into concrete CLIs (with aux) and download as txt from the task detail modal.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip Dest/Network headers when Total routes is 0; capture direction from match groups; expose workbook compare/data/sheet stats and prefer batch aliases in compare/cutover pickers.
Co-authored-by: Cursor <cursoragent@cursor.com>
Filter peers by AFI (and VRF pairs for CE), support zip/pair bindings in discover UI, and tag FIB rows with address_families.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop default-all-VRF mode so collects must bind VRFs manually; discover starts with none selected and select-all toggles to deselect.
Co-authored-by: Cursor <cursoragent@cursor.com>
Open a blocking discover dialog for VRF selection, reorder profile columns with scroll/hints, and reuse shared collect cache between light/heavy monitor items.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire config_vrf plus ipv4/ipv6 forwarding as aux for VPN VRF summaries, and allow unbound items to expand all AF-filtered VRFs at collect time.
Co-authored-by: Cursor <cursoragent@cursor.com>