diff --git a/gso/api/v1/imports.py b/gso/api/v1/imports.py index 5a7ef6c6ef791747fda0e82ee3300e4c45df4edf..c65c23b89c1734f7d06c0a50c9f10e2d0b3a9eed 100644 --- a/gso/api/v1/imports.py +++ b/gso/api/v1/imports.py @@ -1,6 +1,7 @@ import ipaddress from typing import Any from uuid import UUID +import re from fastapi import Depends, HTTPException, status from fastapi.routing import APIRouter @@ -104,6 +105,15 @@ class IptrunkImportModel(BaseModel): return value + @validator("site_name", allow_reuse=True) + def site_name_must_be_valid(cls, site_name: str) -> str: + # Accept 3 chapital letters and only one ditigt after capital letters. + pattern = re.compile(r"^[A-Z]{3}[0-9]?$") + if not bool(pattern.match(site_name)): + raise ValueError(f"Enter a valid site name similar looks like AMS, AMS1or LON9. Get: {site_name}") + + return site_name + @root_validator def check_members(cls, values: dict[str, Any]) -> dict[str, Any]: min_links = values["iptrunk_minimum_links"]