Skip to content
Snippets Groups Projects
Verified Commit 052717b4 authored by Aleksandr Kurbatov's avatar Aleksandr Kurbatov Committed by Karel van Klink
Browse files

BFD settings changes

- BFD model should have separate interval setting for RX and TX, hence
`bfd_interval` -> `bfd_interval_rx`, `bfd_interval_tx`;
- BFD model is only relevant to the SBP interface (with all attributes);
- BGP session will only have a simple flag `bfd_enabled` with default
`False`;
- BFD class models moved from `bgp_session.py` to
`service_binding_port.py`.
parent 60efd98b
No related branches found
No related tags found
1 merge request!298Add BFD configuration to Service binding ports
...@@ -19,34 +19,6 @@ class IPFamily(strEnum): ...@@ -19,34 +19,6 @@ class IPFamily(strEnum):
V6MULTICAST = "v6multicast" V6MULTICAST = "v6multicast"
class BFDSettingsInactive(
ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="BFDSettings"
):
"""Settings for :term:`BFD`, see :class:`BFDSettings`."""
bfd_enabled: bool = False
bfd_interval: int | None = None
bfd_multiplier: int | None = None
class BFDSettingsProvisioning(BFDSettingsInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
"""Settings for :term:`BFD`, see :class:`BFDSettings`."""
bfd_enabled: bool
bfd_interval: int | None
bfd_multiplier: int | None
class BFDSettings(BFDSettingsProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
"""A set of settings for :term:`BFD`."""
#: Whether :term:`BFD` is enabled.
bfd_enabled: bool
#: The :term:`BFD` interval, if enabled.
bfd_interval: int | None
#: The :term:`BFD` multiplier, if enabled.
bfd_multiplier: int | None
class BGPSessionInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="BGPSession"): class BGPSessionInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="BGPSession"):
"""A :term:`BGP` session that is currently inactive. See :class:`BGPSession`.""" """A :term:`BGP` session that is currently inactive. See :class:`BGPSession`."""
...@@ -60,7 +32,7 @@ class BGPSessionInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INI ...@@ -60,7 +32,7 @@ class BGPSessionInactive(ProductBlockModel, lifecycle=[SubscriptionLifecycle.INI
is_multi_hop: bool = False is_multi_hop: bool = False
is_passive: bool = False is_passive: bool = False
rtbh_enabled: bool = False rtbh_enabled: bool = False
bfd_settings: BFDSettingsInactive bfd_enabled: bool = False
class BGPSessionProvisioning(BGPSessionInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]): class BGPSessionProvisioning(BGPSessionInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
...@@ -75,7 +47,7 @@ class BGPSessionProvisioning(BGPSessionInactive, lifecycle=[SubscriptionLifecycl ...@@ -75,7 +47,7 @@ class BGPSessionProvisioning(BGPSessionInactive, lifecycle=[SubscriptionLifecycl
is_multi_hop: bool is_multi_hop: bool
is_passive: bool is_passive: bool
rtbh_enabled: bool rtbh_enabled: bool
bfd_settings: BFDSettingsProvisioning bfd_enabled: bool
class BGPSession(BGPSessionProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]): class BGPSession(BGPSessionProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
...@@ -100,4 +72,4 @@ class BGPSession(BGPSessionProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE ...@@ -100,4 +72,4 @@ class BGPSession(BGPSessionProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE
#: Whether Remote Triggered Blackhole is enabled #: Whether Remote Triggered Blackhole is enabled
rtbh_enabled: bool rtbh_enabled: bool
#: Settings for :term:`BFD`. #: Settings for :term:`BFD`.
bfd_settings: BFDSettings bfd_enabled: bool
...@@ -8,9 +8,6 @@ from orchestrator.types import SubscriptionLifecycle ...@@ -8,9 +8,6 @@ from orchestrator.types import SubscriptionLifecycle
from pydantic import Field from pydantic import Field
from gso.products.product_blocks.bgp_session import ( from gso.products.product_blocks.bgp_session import (
BFDSettings,
BFDSettingsInactive,
BFDSettingsProvisioning,
BGPSession, BGPSession,
BGPSessionInactive, BGPSessionInactive,
BGPSessionProvisioning, BGPSessionProvisioning,
...@@ -20,6 +17,38 @@ from gso.utils.shared_enums import SBPType ...@@ -20,6 +17,38 @@ from gso.utils.shared_enums import SBPType
from gso.utils.types.ip_address import IPv4AddressType, IPV4Netmask, IPv6AddressType, IPV6Netmask from gso.utils.types.ip_address import IPv4AddressType, IPV4Netmask, IPv6AddressType, IPV6Netmask
from gso.utils.types.virtual_identifiers import VLAN_ID from gso.utils.types.virtual_identifiers import VLAN_ID
class BFDSettingsInactive(
ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="BFDSettings"
):
"""Settings for :term:`BFD`, see :class:`BFDSettings`."""
bfd_enabled: bool = False
bfd_interval_rx: int | None = None
bfd_interval_tx: int | None = None
bfd_multiplier: int | None = None
class BFDSettingsProvisioning(BFDSettingsInactive, lifecycle=[SubscriptionLifecycle.PROVISIONING]):
"""Settings for :term:`BFD`, see :class:`BFDSettings`."""
bfd_enabled: bool
bfd_interval_rx: int | None = None
bfd_interval_tx: int | None = None
bfd_multiplier: int | None
class BFDSettings(BFDSettingsProvisioning, lifecycle=[SubscriptionLifecycle.ACTIVE]):
"""A set of settings for :term:`BFD`."""
#: Whether :term:`BFD` is enabled.
bfd_enabled: bool
#: The :term:`BFD` interval RX, if enabled.
bfd_interval_rx: int | None
#: The :term:`BFD` interval TX, if enabled.
bfd_interval_tx: int | None
#: The :term:`BFD` multiplier, if enabled.
bfd_multiplier: int | None
class ServiceBindingPortInactive( class ServiceBindingPortInactive(
ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="ServiceBindingPort" ProductBlockModel, lifecycle=[SubscriptionLifecycle.INITIAL], product_block_name="ServiceBindingPort"
......
...@@ -57,11 +57,12 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -57,11 +57,12 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
class BFDSettingsForm(BaseModel): class BFDSettingsForm(BaseModel):
bfd_enabled: bool = False bfd_enabled: bool = False
bfd_interval: int | None = None bfd_interval_rx: int | None = None
bfd_interval_tx: int | None = None
bfd_multiplier: int | None = None bfd_multiplier: int | None = None
class BaseBGPPeer(BaseModel): class BaseBGPPeer(BaseModel):
bfd_settings: BFDSettingsForm = BFDSettingsForm(bfd_enabled=False) bfd_enabled: bool = False
has_custom_policies: bool = False has_custom_policies: bool = False
authentication_key: str | None = None authentication_key: str | None = None
multipath_enabled: bool = False multipath_enabled: bool = False
...@@ -139,11 +140,10 @@ def initialize_subscription( ...@@ -139,11 +140,10 @@ def initialize_subscription(
"""Take all user inputs and use them to populate the subscription model.""" """Take all user inputs and use them to populate the subscription model."""
edge_port_fqdn_list = [] edge_port_fqdn_list = []
edge_port_subscription = EdgePort.from_subscription(edge_port["edge_port"]) edge_port_subscription = EdgePort.from_subscription(edge_port["edge_port"])
print(binding_port_input["bgp_peers"])
sbp_bgp_session_list = [ sbp_bgp_session_list = [
BGPSession.new( BGPSession.new(
subscription_id=uuid4(), subscription_id=uuid4(),
bfd_settings=BFDSettings.new(subscription_id=uuid4(), **(session.pop("bfd_settings"))),
**session,
rtbh_enabled=True, rtbh_enabled=True,
is_multi_hop=True, is_multi_hop=True,
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment