From 7de4031746ecea7e2009b82c308ee4eae4386505 Mon Sep 17 00:00:00 2001 From: gmuloc Date: Mon, 17 Jun 2024 14:46:44 +0200 Subject: [PATCH] Refactor(eos_designs): Enforce cross-region site name uniqueness at schema level --- .../_eos_designs/schema/eos_designs.schema.yml | 1 + .../cv_pathfinder_regions.schema.yml | 1 + python-avd/pyavd/_eos_designs/shared_utils/wan.py | 13 ------------- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index 4a2684ad1f7..ef7981a48f2 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -703,6 +703,7 @@ keys: primary_key: name unique_keys: - id + - sites.name items: type: dict $ref: eos_cli_config_gen#/keys/router_adaptive_virtual_topology/keys/region diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/cv_pathfinder_regions.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/cv_pathfinder_regions.schema.yml index c578f09fa4a..6be9f00b00d 100644 --- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/cv_pathfinder_regions.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/cv_pathfinder_regions.schema.yml @@ -14,6 +14,7 @@ keys: primary_key: name unique_keys: - id + - sites.name items: type: dict $ref: "eos_cli_config_gen#/keys/router_adaptive_virtual_topology/keys/region" diff --git a/python-avd/pyavd/_eos_designs/shared_utils/wan.py b/python-avd/pyavd/_eos_designs/shared_utils/wan.py index d4d8563f5da..dc7b1dd5682 100644 --- a/python-avd/pyavd/_eos_designs/shared_utils/wan.py +++ b/python-avd/pyavd/_eos_designs/shared_utils/wan.py @@ -269,8 +269,6 @@ def wan_region(self: SharedUtils) -> dict | None: """ WAN region for CV Pathfinder - Also checking if site names are unique across all regions. - The region is required for edges, but optional for pathfinders """ node_defined_region = get( @@ -286,17 +284,6 @@ def wan_region(self: SharedUtils) -> dict | None: self.hostvars, "cv_pathfinder_regions", required=True, org_key="'cv_pathfinder_regions' key must be set when 'wan_mode' is 'cv-pathfinder'." ) - # Verify that site names are unique across all regions. - site_names = [site["name"] for region in regions for site in region["sites"]] - if len(site_names) != len(set(site_names)): - # We have some site names that are not unique - # Now find them (slow so no need to do if we don't have duplicates) - duplicate_site_names = [site_name for site_name in site_names if site_names.count(site_name) > 1] - raise AristaAvdError( - "WAN Site names must be unique across all regions. " - f"Found the following duplicate site name(s) under 'cv_pathfinder_regions.[].sites. {duplicate_site_names}" - ) - return get_item( regions, "name",