mirror of
https://github.com/hansjone/netx.git
synced 2026-10-09 00:50:46 +08:00
Preserve sheet_id/title on compare template import so split sheets round-trip.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
83cf086d8c
commit
9b3e98ede5
2 changed files with 27 additions and 0 deletions
|
|
@ -303,6 +303,9 @@ class RowFilterIn(BaseModel):
|
|||
|
||||
class TemplateMetricIn(BaseModel):
|
||||
metric_id: str
|
||||
# Split sheets share metric_id; identity is sheet_id (export/import must keep both).
|
||||
sheet_id: str = ""
|
||||
title: str = ""
|
||||
key_fields: list[str] = Field(default_factory=list)
|
||||
iface_fields: list[str] = Field(default_factory=list)
|
||||
compare_fields: list[str] = Field(default_factory=list)
|
||||
|
|
|
|||
|
|
@ -420,6 +420,30 @@ class CompareSheetDefaultsTests(unittest.TestCase):
|
|||
self.assertEqual(a["metric_id"], b["metric_id"])
|
||||
self.assertNotEqual(sheet_key(a), sheet_key(b))
|
||||
|
||||
def test_template_in_roundtrip_keeps_split_sheet_ids(self) -> None:
|
||||
"""Export → TemplateIn → create must preserve 拆表 sheet_id (ISIS/BGP/VRRP)."""
|
||||
from netx_api.biz_state.compare_service import (
|
||||
_default_zte_status_sheets,
|
||||
_parse_metrics_body,
|
||||
sheet_key,
|
||||
)
|
||||
from netx_api.biz_state_router import TemplateIn
|
||||
|
||||
sheets = _default_zte_status_sheets()
|
||||
body = TemplateIn(
|
||||
name="ZTE status roundtrip",
|
||||
metrics=sheets,
|
||||
).model_dump()
|
||||
parsed = _parse_metrics_body(body)
|
||||
self.assertEqual(len(parsed), len(sheets))
|
||||
ids = [sheet_key(s) for s in parsed]
|
||||
self.assertIn("isis_adjacency.ipv4", ids)
|
||||
self.assertIn("isis_adjacency.ipv6", ids)
|
||||
self.assertEqual(sum(1 for s in parsed if s["metric_id"] == "isis_adjacency"), 2)
|
||||
self.assertEqual(sum(1 for s in parsed if s["metric_id"] == "bgp_peer"), 6)
|
||||
isis4 = next(s for s in parsed if sheet_key(s) == "isis_adjacency.ipv4")
|
||||
self.assertTrue(str(isis4.get("title") or "").strip())
|
||||
|
||||
def test_arp_default_sheet_has_row_filters(self) -> None:
|
||||
from netx_api.biz_state.compare_service import _default_sheet_for_metric
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue