Commit graph

350 commits

Author SHA1 Message Date
c18c9afa2e Make bgp_route hand-only for divergent IN/OUT CLI layouts.
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>
2026-09-23 15:36:25 +08:00
ac53af4a5d Fix vpnv6 ECMP under-parse and persist full CLI line counts.
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>
2026-09-23 14:53:19 +08:00
a1acd4c2af Fix biz_state status while collecting and improve raw log export UX.
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>
2026-09-23 11:19:01 +08:00
05357e971e Fix ZTE BGP RR *i/RD parsing and add batch collect detail UX.
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>
2026-09-23 10:52:43 +08:00
4c5738e48e Split BGP global activate discover by neighbor IP family.
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>
2026-09-22 21:06:37 +08:00
262082ef08 Add BGP as <local_as> binding for multi-process ZTE collects.
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>
2026-09-22 19:50:17 +08:00
924f9bd2f7 Add collect stop, cutover nav prefetch/cache, and lane labels.
Let operators abort queued/running biz_state batches, speed cutover page switches, and show light/heavy collect lanes on monitor items.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 19:09:18 +08:00
3a0de0d7fb Scale biz_state collects with dedicated workers and non-blocking UI poll.
Add PG claim/NE mutex, persist pool, and biz_state_worker replicas; fix double-SSH and row-count bugs; stop 32m collectNow while-loop from freezing page switches.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 17:00:37 +08:00
0eb65a839e Harden long biz_state collects: release DB during CLI and spool before flush.
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>
2026-09-22 16:24:46 +08:00
c15ea00a23 Show collect start/end times on biz-state task and batch lists.
Helps tune schedule interval from last-run window and batch duration.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 15:58:32 +08:00
12b60c2a52 Mark interrupted biz-state batches as partial on API restart.
Clear stuck collect_running without re-dispatching; finalize in-flight commands as failed with interrupted_by_restart.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 15:44:16 +08:00
586ca69d3f Add BGP IPv4/IPv6 unicast neighbor in/out monitor profiles.
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>
2026-09-22 15:27:31 +08:00
6b35add5a4 Match BGP discover afi exactly so ipv4 does not hit vpnv4.
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>
2026-09-22 15:15:27 +08:00
0aa2bcbbe6 Fix VPNv6 wrap parsing and expand global BGP peer-group members.
Join IPv6 summary/route continuations; reject false FSM hits. For non-VRF AF activates, expand peer-group to member Neighbor IPs (VRF stays direct-only).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 15:10:35 +08:00
e89427297d Rename shared bgp_peer workbook sheet to BGP Status Summary.
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>
2026-09-22 14:50:28 +08:00
c20a731f72 List aux under every export item; dedupe only in flat summary.
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>
2026-09-22 14:34:19 +08:00
9342c0c7ce Export collect commands with aux by default again.
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>
2026-09-22 14:22:46 +08:00
f274d8ea72 Derive discover-backed aux automatically and fix BGP enrich join keys.
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>
2026-09-22 14:17:12 +08:00
c14d4e81ff Point VRF BGP neighbor aux at config_bgp_peer (running-config bgp).
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>
2026-09-22 11:56:01 +08:00
089c88d35e Show aux commands in biz-state UI; keep only config_vrf under BGP VRF summary.
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>
2026-09-22 11:39:44 +08:00
67930bb348 Show unbound collect templates as # comments in export.
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>
2026-09-22 11:24:54 +08:00
32deca1687 Add one-click export of biz-state collect commands.
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>
2026-09-22 11:18:58 +08:00
1fcd613bc6 Fix empty BGP route false positives and add batch alias UX.
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>
2026-09-22 10:58:57 +08:00
908771baea Cache biz-state discover CLI results and improve bind table UX.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 09:48:43 +08:00
b9be545a75 Add opt-in per-NE CLI exec_policy for MCP/API exec.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 09:27:40 +08:00
bfac0b53c8 Enable BGP neighbor out profiles and show binding details on double-click.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 09:26:37 +08:00
dd8d46aebc Wire BGP neighbor in/out discover to config BGP peer intent.
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>
2026-09-21 20:19:29 +08:00
3c3013dd73 Require explicit VRF bindings and toggle select-all in discover.
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>
2026-09-21 18:55:59 +08:00
771f7e21c2 Improve VRF bind UX with modal and share CLI cache across lanes.
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>
2026-09-21 18:40:04 +08:00
3576e4a69c Add ZTE BGP VRF summary aux FIB collect with optional all-VRF expand.
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>
2026-09-21 17:23:34 +08:00
0dc63bb96a Split ZTE L2VPN MAC outgoing into pw/AC/SID fields and skip separator rows.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 14:34:43 +08:00
4b38427679 Enable ZTE L2VPN MAC in the biz_state catalog so it appears as a monitor item.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 11:00:27 +08:00
ed11f5a60c Split L2VPN service instance into type (VPLS/VPWS) and name fields.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 19:26:31 +08:00
3414137daa Add ZTE l2vpn forwardinfo detail biz_state metric with TextFSM and compare sheet.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 19:14:25 +08:00
155db4af63 Parse optional 8X lane count in ZTE opticalinfo so QSFP-DD multi-lane powers stay aligned.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 17:08:40 +08:00
34a98fefcf Fix cutover compare tab switching and order detail columns Key/Compare/Display.
Remount BizComparePage per route so templates↔jobs no longer stuck; align column order.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 16:52:37 +08:00
3d2489041a Improve biz-compare UX with guided create, sheet toggles, and per-run delete.
Also sticky template field headers and biz-state pause/start endpoints.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 16:29:50 +08:00
9b3e98ede5 Preserve sheet_id/title on compare template import so split sheets round-trip.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 15:56:26 +08:00
ac4f115ee8 Harden ZTE biz-state parsers and default | one-line collect CLIs.
Append secondary IPs with M/S tags, skip ND6 clock banners, split optical power vs thresholds including QSFP lanes, broaden static-route egress ifnames, and add | one-line to ZTE collect templates except interface detail.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 14:49:41 +08:00
d900aca633 Allow blank MT when parsing ZTE ISIS adjacency.
IPv4 rows often omit MT; requiring a token skipped the whole line.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 14:03:28 +08:00
5ab08bb9b3 Rename interface_detail admin field to port_status.
Header is/up/down is operational port state, not brief-style Admin.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 11:34:05 +08:00
b6eab3ed8f Show original field names in biz-state workbook headers.
Stop using Chinese display_name for metric sheet columns so headers match the raw field keys.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 11:25:06 +08:00
ee375b144d Extend heavy CLI timeout to ~25m and show batch progress live.
Persist running commands early, bump command/row counts during collect, and poll the batches tab while a long show-interface run is in progress.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 11:14:30 +08:00
a6ea67a8bf Extract IP/MPLS/IPv6 MTU from ZTE interface detail.
Plain MTU alone missed sibling values in filtered show interface output; also clear Filldown between interfaces so optional IPv6 MTU does not leak.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 11:07:18 +08:00
f279431c70 Run heavy CLI dumps on a dedicated long-timeout SSH lane.
Split interface detail/route-class collects from the light lane so they no longer block other checks, and scope Collect Now busy state per task.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 10:56:17 +08:00
99cec1c324 Dedupe if-intf/config_interface collects and allow idle manual collect.
Remap legacy if_intf items, skip duplicate CLI+metric work, hide aux command duplicates in the workbook, use profile titles for sheet tabs, sticky table headers, and let scheduled tasks trigger collect-now when idle.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 10:35:04 +08:00
18a0c41196 Paginate biz-state batch workbook and expose raw CLI logs.
Load batch summaries without metric payloads, fetch sheet rows on demand, and show collect commands with a raw-log viewer.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 10:13:45 +08:00
a769e603b7 Remove fake VRF Route Summary collect item.
Drop the route-summary profiles/parser/persist path; keep VRF list discover for bindings and strip it from default cutover templates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 09:58:26 +08:00
1642a0adec Merge duplicate if-intf checks into Config Interface Intent.
Hide standalone IF VRF from the catalog and point ARP enrich at config_interface so one CLI maps to one check item.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 09:48:48 +08:00
c1b1c0f75d Persist cutover evidence cards with device-raw A/B keys for board and AI.
Evaluate keeps match keys for normalize/map pairing while diffs, reds, and the board show collected ports plus show-command provenance; add monitor-context and command-raw read APIs with biz-monitor:read scope.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-19 22:48:37 +08:00