Skip to content
Snippets Groups Projects

new IP trunk migration

Merged Karel van Klink requested to merge feature/ip-trunk-migration into develop
3 files
+ 58
9
Compare changes
  • Side-by-side
  • Inline
Files
3
"""The product block that describes a site subscription."""
import re
from typing import Optional
from orchestrator.domain.base import ProductBlockModel
from orchestrator.types import SubscriptionLifecycle, strEnum
from pydantic import ConstrainedStr
class SiteTier(strEnum):
@@ -19,6 +20,14 @@ class SiteTier(strEnum):
TIER4 = 4
class SnmpCoordinate(ConstrainedStr):
"""An SNMP coordinate, modeled as a constrained string.
The coordinate must match the format of `1.35`, `-12.3456`, etc.
"""
regex = re.compile(r"^-?\d{1,2}\.\d+$")
class SiteBlockInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="SiteBlock"):
"""A site that's currently inactive, see {class}`SiteBlock`."""
@@ -26,8 +35,8 @@ class SiteBlockInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INIT
site_city: Optional[str] = None
site_country: Optional[str] = None
site_country_code: Optional[str] = None
site_latitude: Optional[float] = None
site_longitude: Optional[float] = None
site_latitude: Optional[SnmpCoordinate] = None
site_longitude: Optional[SnmpCoordinate] = None
site_internal_id: Optional[int] = None
site_bgp_community_id: Optional[int] = None
site_tier: Optional[SiteTier] = None
@@ -41,8 +50,8 @@ class SiteBlockProvisioning(SiteBlockInactive, lifecycle=[SubscriptionLifecycle.
site_city: Optional[str] = None
site_country: Optional[str] = None
site_country_code: Optional[str] = None
site_latitude: Optional[float] = None
site_longitude: Optional[float] = None
site_latitude: Optional[SnmpCoordinate] = None
site_longitude: Optional[SnmpCoordinate] = None
site_internal_id: Optional[int] = None
site_bgp_community_id: Optional[int] = None
site_tier: Optional[SiteTier] = None
@@ -62,9 +71,9 @@ class SiteBlock(SiteBlockProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE])
site_country_code: str
"""The code of the corresponding country. This is also used for the {term}`FQDN`, following the example given for
the site name, the country code would end up in the Y position."""
site_latitude: float
site_latitude: SnmpCoordinate
"""The latitude of the site, used for {term}`SNMP` purposes."""
site_longitude: float
site_longitude: SnmpCoordinate
"""Similar to the latitude, the longitude of a site."""
site_internal_id: int
"""The internal ID used within GÉANT to denote a site."""
Loading