Skip to content

Import edge port

This module defines the EdgePortImportModel for importing existing edge ports.

EdgePortImportModel

Bases: BaseModel

Required fields for importing an existing gso.products.product_types.edge_port.

Source code in gso/utils/types/import_edge_port.py
class EdgePortImportModel(BaseModel):
    """Required fields for importing an existing `gso.products.product_types.edge_port`."""

    node: str
    service_type: EdgePortType
    speed: PhysicalPortCapacity
    encapsulation: EncapsulationType
    name: str
    minimum_links: int
    ga_id: IMPORTED_GA_ID | None
    mac_address: MacAddress | None
    partner: ExistingPartnerStr
    enable_lacp: bool
    lacp_xmit_interval_slow: bool = False
    ignore_if_down: bool
    ae_members: LAGMemberList[LAGMember]
    description: str | None = None
    custom_service_name: str | None = None

    @field_validator("node")
    def validate_node(cls, value: str) -> str:
        """Check if the node is an active PE router in GSO."""
        pe_routers = {str(router["subscription_id"]) for router in get_active_pe_routers(includes=["subscription_id"])}
        if value not in pe_routers:
            msg = f"Router {value} not found"
            raise ValueError(msg)

        return value

    @model_validator(mode="after")
    def check_members(self) -> Self:
        """Amount of LAG members has to match and meet the minimum requirement."""
        if len(self.ae_members) < self.minimum_links:
            msg = f"Number of members should be at least {self.minimum_links} (edge_port_minimum_links)"
            raise ValueError(msg)
        return self

validate_node(value)

Check if the node is an active PE router in GSO.

Source code in gso/utils/types/import_edge_port.py
@field_validator("node")
def validate_node(cls, value: str) -> str:
    """Check if the node is an active PE router in GSO."""
    pe_routers = {str(router["subscription_id"]) for router in get_active_pe_routers(includes=["subscription_id"])}
    if value not in pe_routers:
        msg = f"Router {value} not found"
        raise ValueError(msg)

    return value

check_members()

Amount of LAG members has to match and meet the minimum requirement.

Source code in gso/utils/types/import_edge_port.py
@model_validator(mode="after")
def check_members(self) -> Self:
    """Amount of LAG members has to match and meet the minimum requirement."""
    if len(self.ae_members) < self.minimum_links:
        msg = f"Number of members should be at least {self.minimum_links} (edge_port_minimum_links)"
        raise ValueError(msg)
    return self