Stop clearing the wake event at sleep entry, keep force-sync skip until consumed, and make pause loops wait on the resume event so UI start kicks topology immediately.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire topology_auto_sync into resume/pause force-sync hints, ignore stale_running cleanup rows when computing the interval clock, and wait a full interval instead of pulling topology on every cold start.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use savepoint upserts with payload dedupe, finalize jobs on a fresh sibling session, serialize concurrent topology syncs, and reap stale running rows so the scheduler does not keep spawning orphans.
Co-authored-by: Cursor <cursoragent@cursor.com>
Phase-1 docks both topology APIs without writing Fabric; expose a 24h topology_auto_sync task and domain=topology manual sync for later LLDP alignment.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop infinite reconnect loops when ZTE returns HTML 500 for a dead stream id and surface re-establish in the UI.
Co-authored-by: Cursor <cursoragent@cursor.com>
Restore sql_text and alarm-apply imports, slim WSS handshake headers to accessToken only, and treat 404/503 handshakes as lost subscriptions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Restore sqlalchemy.func and runtime helpers so alarms_current upsert and pause/resume no longer raise NameError 500s.
Co-authored-by: Cursor <cursoragent@cursor.com>
Restore ume_verify_tls=false so onsite UME login works without a .env override; production should set NETX_UME_VERIFY_TLS=true or pin a CA.
Co-authored-by: Cursor <cursoragent@cursor.com>
Point .env.example at NETX_UME_VERIFY_TLS=false for self-signed UME and surface the same hint on certificate verify login failures.
Co-authored-by: Cursor <cursoragent@cursor.com>
Project-neighbors supports dry_run for local dirty canvas; Save flushes adds. Connect mode uses drag-from side anchors with smoothstep elbows instead of click-click.
Co-authored-by: Cursor <cursoragent@cursor.com>
Queue fabric edge deletes until Save with undo-safe pending state; hard-delete topology/LLDP placeholders from the canvas; purge fully orphaned fabric nodes after inventory detach, with a periodic reconcile GC.
Co-authored-by: Cursor <cursoragent@cursor.com>
Toolbar and pane context menu create placeholders that follow the same setup path as LLDP in NE management and WebCRT.
Co-authored-by: Cursor <cursoragent@cursor.com>
Claim the existing placeholder in place and promote source to webcrt instead of prompting for password-only auth.
Co-authored-by: Cursor <cursoragent@cursor.com>
Align collection tasks with LLDP/config-sync chrome, and refresh active-task overview when jobs change.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop header netx-api/oclaw pills, restore UME/OClaw runtime rows in ops tasks, and raise node/edge label contrast on the dark canvas.
Co-authored-by: Cursor <cursoragent@cursor.com>
Lazy-load module routes, restyle remaining light cards/modals/sidebars, and let canvas background be tuned from the display menu.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sample Windows CPU via Processor Utility so values match Task Manager, and expose host metrics on /v1/metrics/json for the workbench poll.
Co-authored-by: Cursor <cursoragent@cursor.com>
Accept generic/linux on update, expose them in the device-type meta list, and auto-pick zte_zxros when vendor changes from a placeholder type.
Co-authored-by: Cursor <cursoragent@cursor.com>
Managed NEs reuse stored credentials; unmanaged/LLDP placeholders get an IP and SSH/Telnet form. Selected links now show a clear highlight, and login page flare tweaks are included.
Co-authored-by: Cursor <cursoragent@cursor.com>
Filter add/layout/remove keeps MCP payloads small; tokens default MCP scopes and edit them in a modal with a compact help tip.
Co-authored-by: Cursor <cursoragent@cursor.com>
Paginate LLDP job items, surface port-traffic raw logs with a 300s default, harden topology discover/edit/zoom/fullscreen, and join mid-token CLI wraps before TextFSM.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match ZXROS Scope/Holdtime columns, disable Netmiko cmd_verify on show commands, and do not SSH LLDP when vendor/device_type cannot be resolved.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use custom cli_templates plus community ntc-templates for LLDP and port traffic across ZTE/Huawei/Cisco/H3C/Juniper/Nokia, drop regex parsers, and surface Admin/Phy/Prot on port discover. Also batch-add topology NEs and tighten workbench branding.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bastion hop success notices mention authentication failure count and were misread as target_auth_rejected.
Co-authored-by: Cursor <cursoragent@cursor.com>
Optional DDL used bare try/except, which left the migration txn aborted so alembic_version never stamped and config-sync APIs failed. Run best-effort statements inside SAVEPOINTs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Brownfield tables still require task_id while ORM only wrote device_id; mirror both columns on write and relax the leftover constraint.
Co-authored-by: Cursor <cursoragent@cursor.com>
Modular split left discover_ports referencing settings without importing it, which raised NameError on pull-ports.
Co-authored-by: Cursor <cursoragent@cursor.com>
API /metrics and /health/ready now read a worker heartbeat when collectors are split out; WebCRT blocking I/O uses a dedicated executor so session pumps do not starve the default pool.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default start_netx.ps1/sh now set NETX_RUN_INLINE_SCHEDULERS=false and launch netx_api.worker; stop scripts tear the worker down with the API.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep inline schedulers as the start_netx.ps1 default while bounding UME raw_json and pruning old NE collection dirs on startup.
Co-authored-by: Cursor <cursoragent@cursor.com>
Size DB pool, CLI budget, and WebCRT session caps for concurrent operators while keeping hard ceilings and env overrides.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the discover facade stable for routers/tests while fixing the missing infer_device_type_vendor import on UME target resolution.
Co-authored-by: Cursor <cursoragent@cursor.com>