Skip to content
Snippets Groups Projects
Commit 818a47ef authored by Neda Moeini's avatar Neda Moeini
Browse files

Add BFD settings form and update IX Port creation WF

parent e7cdda2c
No related branches found
No related tags found
No related merge requests found
Pipeline #94522 failed
"""Add Commertial peers, IX port, private peer port and transit proivder port WFs.
Revision ID: f16525338855
Revises: fb88e4914b47
Create Date: 2025-06-02 11:36:48.053232
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = 'f16525338855'
down_revision = 'fb88e4914b47'
branch_labels = None
depends_on = None
from orchestrator.migrations.helpers import create_workflow, delete_workflow
new_workflows = [
{
"name": "create_ix_port",
"target": "CREATE",
"description": "Create IX Port Service",
"product_type": "IXPort"
}
]
def upgrade() -> None:
conn = op.get_bind()
for workflow in new_workflows:
create_workflow(conn, workflow)
def downgrade() -> None:
conn = op.get_bind()
for workflow in new_workflows:
delete_workflow(conn, workflow["name"])
...@@ -22,11 +22,11 @@ class L3InterfacePortBlockInactive( ...@@ -22,11 +22,11 @@ class L3InterfacePortBlockInactive(
ipv4_mask: IPv4Netmask | None = None ipv4_mask: IPv4Netmask | None = None
ipv6_address: IPv6AddressType | None = None ipv6_address: IPv6AddressType | None = None
ipv6_mask: IPv6Netmask | None = None ipv6_mask: IPv6Netmask | None = None
custom_firewall_filters: bool custom_firewall_filters: bool | None = None
gs_id: str gs_id: str | None = None
edge_port: EdgePortBlockInactive edge_port: EdgePortBlockInactive | None = None
v4_bfd_settings: BFDSettings v4_bfd_settings: BFDSettings | None = None
v6_bfd_settings: BFDSettings v6_bfd_settings: BFDSettings | None = None
class L3InterfacePortBlockProvisioning( class L3InterfacePortBlockProvisioning(
......
"""All workflows that can be executed on IX Port."""
...@@ -8,7 +8,7 @@ from orchestrator.types import SubscriptionLifecycle ...@@ -8,7 +8,7 @@ from orchestrator.types import SubscriptionLifecycle
from orchestrator.workflow import StepList, begin, done from orchestrator.workflow import StepList, begin, done
from orchestrator.workflows.steps import resync, set_status, store_process_subscription from orchestrator.workflows.steps import resync, set_status, store_process_subscription
from orchestrator.workflows.utils import wrap_create_initial_input_form from orchestrator.workflows.utils import wrap_create_initial_input_form
from pydantic import ConfigDict, Field from pydantic import ConfigDict, Field, BaseModel
from pydantic_forms.types import FormGenerator, State, UUIDstr from pydantic_forms.types import FormGenerator, State, UUIDstr
from pydantic_forms.validators import Divider from pydantic_forms.validators import Divider
...@@ -35,6 +35,13 @@ def initial_input_generator(product_name: str) -> FormGenerator: ...@@ -35,6 +35,13 @@ def initial_input_generator(product_name: str) -> FormGenerator:
partner: partner_choice() partner: partner_choice()
initial_user_input = yield InitialIXPortForm initial_user_input = yield InitialIXPortForm
class BFDSettingsForm(BaseModel):
bfd_enabled: bool = False
bfd_interval_rx: int | None = Field(default=None, examples=["BFD RX defaults"])
bfd_interval_tx: int | None = None
bfd_multiplier: int | None = None
class ConfigureIXPortForm(SubmitFormPage): class ConfigureIXPortForm(SubmitFormPage):
model_config = ConfigDict(title=f"{product_name} - Configure IX Port") model_config = ConfigDict(title=f"{product_name} - Configure IX Port")
...@@ -51,8 +58,8 @@ def initial_input_generator(product_name: str) -> FormGenerator: ...@@ -51,8 +58,8 @@ def initial_input_generator(product_name: str) -> FormGenerator:
ipv6_mask: IPv6Netmask | None = None ipv6_mask: IPv6Netmask | None = None
custom_firewall_filters: bool = False custom_firewall_filters: bool = False
divider2: Divider = Field(None, exclude=True) divider2: Divider = Field(None, exclude=True)
v4_bfd_settings: BFDSettings v4_bfd_settings: BFDSettingsForm
v6_bfd_settings: BFDSettings v6_bfd_settings: BFDSettingsForm
config_input = yield ConfigureIXPortForm config_input = yield ConfigureIXPortForm
...@@ -78,8 +85,8 @@ def initialize_subscription( ...@@ -78,8 +85,8 @@ def initialize_subscription(
ipv6_address: IPv6AddressType | None, ipv6_address: IPv6AddressType | None,
ipv6_mask: IPv6Netmask | None, ipv6_mask: IPv6Netmask | None,
custom_firewall_filters: bool, custom_firewall_filters: bool,
v4_bfd_settings: BFDSettings, v4_bfd_settings: dict,
v6_bfd_settings: BFDSettings, v6_bfd_settings: dict,
) -> State: ) -> State:
"""Initialize the IXPort subscription object.""" """Initialize the IXPort subscription object."""
...@@ -94,8 +101,8 @@ def initialize_subscription( ...@@ -94,8 +101,8 @@ def initialize_subscription(
ipv6_address=ipv6_address, ipv6_address=ipv6_address,
ipv6_mask=ipv6_mask, ipv6_mask=ipv6_mask,
custom_firewall_filters=custom_firewall_filters, custom_firewall_filters=custom_firewall_filters,
v4_bfd_settings=v4_bfd_settings, v4_bfd_settings=BFDSettings.new(subscription_id=uuid4(), **(v4_bfd_settings)),
v6_bfd_settings=v6_bfd_settings, v6_bfd_settings=BFDSettings.new(subscription_id=uuid4(), **(v6_bfd_settings)),
) )
subscription = IXPort.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING) subscription = IXPort.from_other_lifecycle(subscription, SubscriptionLifecycle.PROVISIONING)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment