Skip to content

Bfd

BFD model that is used in input forms and for validation purposes.

BFDInputModel

Bases: BaseModel

BFD input model that is used in input forms.

Source code in gso/utils/types/bfd.py
class BFDInputModel(BaseModel):
    """BFD input model that is used in input forms."""

    bfd_enabled: bool = False
    bfd_interval_rx: int | None = None
    bfd_interval_tx: int | None = None
    bfd_multiplier: int | None = None

    @model_validator(mode="after")
    def validate_bfd_model(self: Self) -> Self:
        """BFD settings can only be filled in when BFD is enabled.

        Conversely, if BFD is enabled, all settings must be entered.
        """
        msg = None
        if self.bfd_enabled and not bool(self.bfd_interval_rx and self.bfd_interval_tx and self.bfd_multiplier):
            msg = "All BFD settings must be set when BFD is enabled."
        if not self.bfd_enabled and bool(self.bfd_interval_rx or self.bfd_interval_tx or self.bfd_multiplier):
            msg = "BFD settings are not allowed when BFD is not enabled."
        if msg:
            raise ValueError(msg)
        return self

validate_bfd_model()

BFD settings can only be filled in when BFD is enabled.

Conversely, if BFD is enabled, all settings must be entered.

Source code in gso/utils/types/bfd.py
@model_validator(mode="after")
def validate_bfd_model(self: Self) -> Self:
    """BFD settings can only be filled in when BFD is enabled.

    Conversely, if BFD is enabled, all settings must be entered.
    """
    msg = None
    if self.bfd_enabled and not bool(self.bfd_interval_rx and self.bfd_interval_tx and self.bfd_multiplier):
        msg = "All BFD settings must be set when BFD is enabled."
    if not self.bfd_enabled and bool(self.bfd_interval_rx or self.bfd_interval_tx or self.bfd_multiplier):
        msg = "BFD settings are not allowed when BFD is not enabled."
    if msg:
        raise ValueError(msg)
    return self