mirror of
https://github.com/hansjone/netx.git
synced 2026-10-13 06:13:16 +08:00
Save path: one atomic POST /views/{id}/commit (edges, ports, styles, node
add/remove, positions) replaces the multi-request save. Edge styles and
manual-edge port edits now go through dirty/undo/save instead of writing
immediately; non-manual edge ports are read-only.
Data safety: UI saves no longer clear MCP node locks or freeze the device
name into the placement label (label_override + omit-means-keep semantics,
also applied to the MCP positions tool). Adding NEs/neighbors with unsaved
edits now saves first instead of silently dropping them. Positions no longer
bypass membership caps, except persisting synthesized child-region icons.
Fixes found in acceptance: nodes added in the same commit kept (40,40)
under autoflush=False; edits on edges deleted in the same save 404'd the
whole save; box-selection drags and arrow-key moves were not marked dirty;
large canvases far from the origin opened blank and locate did nothing
because fitView waits for measurement that onlyRenderVisibleElements never
does (now fitBounds from known geometry).
Also: batch N+1 lookups in graph/positions, deterministic truncation,
outside-peer scan excludes internal edges, split TopologyPage into hooks,
fix flaky UME/LLDP port test, add scripts/topology_clear_frozen_labels.py.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
111 lines
2.8 KiB
Python
111 lines
2.8 KiB
Python
"""Topology domain facade — re-exports fabric / views / discover for compatibility."""
|
|
from __future__ import annotations
|
|
|
|
from .topology_common import (
|
|
_is_deadlock_error,
|
|
_norm_host,
|
|
)
|
|
from .topology_discover import (
|
|
_apply_discover_hits,
|
|
get_discover_job,
|
|
pause_discover_job,
|
|
prune_discover_jobs,
|
|
reclaim_stale_discover_jobs,
|
|
recover_lldp_discover_on_startup,
|
|
resume_discover_job,
|
|
start_discover_job,
|
|
stop_discover_job,
|
|
)
|
|
from .topology_fabric import (
|
|
_apply_missing_and_purge,
|
|
_mark_replaced_port_peers,
|
|
_match_hit_to_fabric_node,
|
|
_node_out,
|
|
delete_fabric_edge,
|
|
delete_fabric_edges,
|
|
ensure_fabric_node_for_managed,
|
|
ensure_fabric_node_for_ume,
|
|
ensure_lldp_discovered_managed_ne,
|
|
find_fabric_paths,
|
|
get_fabric_neighborhood,
|
|
get_fabric_summary,
|
|
list_fabric_edges,
|
|
list_fabric_nodes,
|
|
merge_duplicate_fabric_nodes,
|
|
refresh_fabric_stats,
|
|
upsert_fabric_edge,
|
|
)
|
|
from .topology_views import (
|
|
_place_fabric_ids_on_view,
|
|
add_nodes_to_view,
|
|
bootstrap_topology_tree,
|
|
commit_view_changes,
|
|
create_folder,
|
|
create_topology_placeholder_on_view,
|
|
create_view,
|
|
delete_folder,
|
|
delete_view,
|
|
ensure_region_physical_view,
|
|
get_topology_tree,
|
|
get_view_graph,
|
|
list_views,
|
|
patch_manual_edge_ports,
|
|
patch_view_edge_style,
|
|
patch_view_positions,
|
|
populate_view,
|
|
project_fabric_neighbors_to_view,
|
|
remove_view_nodes,
|
|
update_folder,
|
|
update_view,
|
|
)
|
|
|
|
__all__ = [
|
|
"_apply_discover_hits",
|
|
"_apply_missing_and_purge",
|
|
"_is_deadlock_error",
|
|
"_mark_replaced_port_peers",
|
|
"_match_hit_to_fabric_node",
|
|
"_node_out",
|
|
"_norm_host",
|
|
"_place_fabric_ids_on_view",
|
|
"add_nodes_to_view",
|
|
"bootstrap_topology_tree",
|
|
"commit_view_changes",
|
|
"create_folder",
|
|
"create_topology_placeholder_on_view",
|
|
"create_view",
|
|
"delete_fabric_edge",
|
|
"delete_fabric_edges",
|
|
"delete_folder",
|
|
"delete_view",
|
|
"ensure_fabric_node_for_managed",
|
|
"ensure_fabric_node_for_ume",
|
|
"ensure_lldp_discovered_managed_ne",
|
|
"ensure_region_physical_view",
|
|
"get_discover_job",
|
|
"get_fabric_neighborhood",
|
|
"get_fabric_summary",
|
|
"get_topology_tree",
|
|
"get_view_graph",
|
|
"list_fabric_edges",
|
|
"list_fabric_nodes",
|
|
"list_views",
|
|
"merge_duplicate_fabric_nodes",
|
|
"patch_manual_edge_ports",
|
|
"patch_view_edge_style",
|
|
"patch_view_positions",
|
|
"pause_discover_job",
|
|
"populate_view",
|
|
"project_fabric_neighbors_to_view",
|
|
"prune_discover_jobs",
|
|
"reclaim_stale_discover_jobs",
|
|
"recover_lldp_discover_on_startup",
|
|
"refresh_fabric_stats",
|
|
"remove_view_nodes",
|
|
"resume_discover_job",
|
|
"start_discover_job",
|
|
"stop_discover_job",
|
|
"update_folder",
|
|
"update_view",
|
|
"upsert_fabric_edge",
|
|
]
|