Skip to content
Snippets Groups Projects
Verified Commit 4d2bb7ac authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

Add summary pages to switch and lan switch interconnect creation

parent 5b640cf3
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !300. Comments created here will be created in the context of that merge request.
......@@ -59,4 +59,4 @@ class AddressSpace(strEnum):
"""Types of address space. Can be private or public."""
PRIVATE = "PRIVATE"
PUBLIC = "PRIVATE"
PUBLIC = "PUBLIC"
......@@ -37,6 +37,7 @@ from gso.utils.types.interfaces import (
)
from gso.utils.types.ip_address import AddressSpace
from gso.utils.types.tt_number import TTNumber
from gso.workflows.shared import create_summary_form
def _initial_input_form(product_name: str) -> FormGenerator:
......@@ -53,8 +54,8 @@ def _initial_input_form(product_name: str) -> FormGenerator:
divider: Divider
vlan_id: ReadOnlyField(111, default_type=int) # type: ignore[valid-type]
user_input = yield CreateLANSwitchInterconnectForm
router = Router.from_subscription(user_input.router_side)
initial_input = yield CreateLANSwitchInterconnectForm
router = Router.from_subscription(initial_input.router_side)
if router.router.vendor == Vendor.NOKIA:
......@@ -67,19 +68,19 @@ def _initial_input_form(product_name: str) -> FormGenerator:
router_side_ae_member_list = Annotated[
list[NokiaLAGMemberA],
AfterValidator(validate_interface_names_are_unique),
Len(min_length=user_input.minimum_link_count),
Len(min_length=initial_input.minimum_link_count),
]
else:
router_side_ae_member_list = Annotated[ # type: ignore[assignment, misc]
list[JuniperLAGMember],
AfterValidator(validate_interface_names_are_unique),
Len(min_length=user_input.minimum_link_count),
Len(min_length=initial_input.minimum_link_count),
]
class InterconnectRouterSideForm(FormPage):
model_config = ConfigDict(title="Please enter interface names and descriptions for the router side.")
router_side_iface: available_lags_choices(user_input.router_side) or JuniperAEInterface or str # type: ignore[valid-type]
router_side_iface: available_lags_choices(initial_input.router_side) or JuniperAEInterface or str # type: ignore[valid-type]
router_side_ae_members: router_side_ae_member_list
router_side_input = yield InterconnectRouterSideForm
......@@ -100,8 +101,24 @@ def _initial_input_form(product_name: str) -> FormGenerator:
switch_side_ae_members: switch_side_ae_member_list
switch_side_input = yield InterconnectSwitchSideForm
user_input = initial_input.model_dump() | router_side_input.model_dump() | switch_side_input.model_dump()
summary_fields = [
"tt_number",
"partner",
"router_side",
"switch_side",
"address_space",
"description",
"minimum_link_count",
"vlan_id",
"router_side_iface",
"router_side_ae_members",
"switch_side_iface",
"switch_side_ae_members",
]
yield from create_summary_form(user_input, product_name, summary_fields)
return user_input.model_dump() | router_side_input.model_dump() | switch_side_input.model_dump()
return user_input
@step("Create subscription")
......
......@@ -25,6 +25,7 @@ from gso.utils.shared_enums import Vendor
from gso.utils.types.ip_address import PortNumber
from gso.utils.types.tt_number import TTNumber
from gso.utils.workflow_steps import prompt_sharepoint_checklist_url
from gso.workflows.shared import create_summary_form
def _initial_input_form_generator(product_name: str) -> FormGenerator:
......@@ -55,8 +56,12 @@ def _initial_input_form_generator(product_name: str) -> FormGenerator:
return self
user_input = yield CreateSwitchForm
return user_input.model_dump()
input_form = yield CreateSwitchForm
user_input = input_form.model_dump()
summary_fields = ["tt_number", "partner", "switch_site", "hostname", "ts_port", "vendor", "model"]
yield from create_summary_form(user_input, product_name, summary_fields)
return user_input
@step("Create subscription")
......
......@@ -50,6 +50,7 @@ def input_form_data(faker, router_subscription_factory, switch_subscription_fact
"switch_side_iface": faker.network_interface(),
"switch_side_ae_members": faker.link_members_juniper()[:2],
},
{},
]
return _generate_form_data
......
......@@ -33,6 +33,7 @@ def test_create_switch_success(
"hostname": faker.domain_word(),
"ts_port": faker.port_number(is_user=True),
},
{},
]
mock_hostname_available.return_value = True
mock_sharepoint_client.return_value = MockedSharePointClient
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment