diff --git a/gso/api/v1/imports.py b/gso/api/v1/imports.py index 0b2b6b1624c06acb657cca57ebb03a0817972cf0..643b4bc09a8295a35ca1b6f4ee1bcc08a978371e 100644 --- a/gso/api/v1/imports.py +++ b/gso/api/v1/imports.py @@ -62,7 +62,7 @@ class IptrunkImportModel(BaseModel): """Required fields for importing an existing :class:`gso.products.product_types.iptrunk`.""" partner: str - geant_s_sid: str + geant_s_sid: str | None iptrunk_type: IptrunkType iptrunk_description: str iptrunk_speed: PhysicalPortCapacity @@ -70,11 +70,11 @@ class IptrunkImportModel(BaseModel): iptrunk_isis_metric: int side_a_node_id: str side_a_ae_iface: str - side_a_ae_geant_a_sid: str + side_a_ae_geant_a_sid: str | None side_a_ae_members: list[LAGMember] side_b_node_id: str side_b_ae_iface: str - side_b_ae_geant_a_sid: str + side_b_ae_geant_a_sid: str | None side_b_ae_members: list[LAGMember] iptrunk_ipv4_network: ipaddress.IPv4Network diff --git a/gso/products/product_blocks/iptrunk.py b/gso/products/product_blocks/iptrunk.py index 901f37e787805e68307fc598a95080b0e6cdbd08..4a726c4117af2db83889d5e4b80d748d47538088 100644 --- a/gso/products/product_blocks/iptrunk.py +++ b/gso/products/product_blocks/iptrunk.py @@ -139,7 +139,7 @@ class IptrunkBlock(IptrunkBlockProvisioning, lifecycle=[SubscriptionLifecycle.AC """A trunk that's currently deployed in the network.""" #: GÉANT service ID associated with this trunk. - geant_s_sid: str + geant_s_sid: str | None = None #: A human-readable description of this trunk. iptrunk_description: str #: The type of trunk, can be either dark fibre or leased capacity. diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py index b4dbed48a5cb6e9ef389147b71ac985e750987fa..5d02b13ae275f720af9157fa168348a77e49d5ef 100644 --- a/gso/workflows/iptrunk/create_iptrunk.py +++ b/gso/workflows/iptrunk/create_iptrunk.py @@ -57,7 +57,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: tt_number: str partner: str = ReadOnlyField("GEANT") - geant_s_sid: str + geant_s_sid: str | None iptrunk_description: str iptrunk_type: IptrunkType iptrunk_speed: PhysicalPortCapacity @@ -108,7 +108,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: title = f"Provide subscription details for side A of the trunk.({router_a_fqdn})" side_a_ae_iface: available_lags_choices(router_a) or str # type: ignore[valid-type] - side_a_ae_geant_a_sid: str + side_a_ae_geant_a_sid: str | None side_a_ae_members: ae_members_side_a # type: ignore[valid-type] @validator("side_a_ae_members", allow_reuse=True) @@ -159,7 +159,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: title = f"Provide subscription details for side B of the trunk.({router_b_fqdn})" side_b_ae_iface: available_lags_choices(router_b) or str # type: ignore[valid-type] - side_b_ae_geant_a_sid: str + side_b_ae_geant_a_sid: str | None side_b_ae_members: ae_members_side_b # type: ignore[valid-type] @validator("side_b_ae_members", allow_reuse=True) @@ -209,18 +209,18 @@ def get_info_from_ipam(subscription: IptrunkInactive) -> State: @step("Initialize subscription") def initialize_subscription( subscription: IptrunkInactive, - geant_s_sid: str, + geant_s_sid: str | None, iptrunk_type: IptrunkType, iptrunk_description: str, iptrunk_speed: PhysicalPortCapacity, iptrunk_minimum_links: int, side_a_node_id: str, side_a_ae_iface: str, - side_a_ae_geant_a_sid: str, + side_a_ae_geant_a_sid: str | None, side_a_ae_members: list[dict], side_b_node_id: str, side_b_ae_iface: str, - side_b_ae_geant_a_sid: str, + side_b_ae_geant_a_sid: str | None, side_b_ae_members: list[dict], ) -> State: """Take all input from the user, and store it in the database.""" diff --git a/gso/workflows/iptrunk/modify_trunk_interface.py b/gso/workflows/iptrunk/modify_trunk_interface.py index d3b5e60ee539660e7aa2fbd22088d20c8235e6cb..816ff706b1fe28c4aff885f458c3904be4ab3c7c 100644 --- a/gso/workflows/iptrunk/modify_trunk_interface.py +++ b/gso/workflows/iptrunk/modify_trunk_interface.py @@ -79,7 +79,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: class ModifyIptrunkForm(FormPage): tt_number: str - geant_s_sid: str = subscription.iptrunk.geant_s_sid + geant_s_sid: str | None = subscription.iptrunk.geant_s_sid iptrunk_description: str = subscription.iptrunk.iptrunk_description iptrunk_type: IptrunkType = subscription.iptrunk.iptrunk_type warning_label: Label = ( @@ -105,7 +105,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: side_a_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn) side_a_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface) - side_a_ae_geant_a_sid: str = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_geant_a_sid + side_a_ae_geant_a_sid: str | None = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_geant_a_sid side_a_ae_members: ae_members_side_a = ( # type: ignore[valid-type] subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members if initial_user_input.iptrunk_speed == subscription.iptrunk.iptrunk_speed @@ -130,7 +130,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: side_b_node: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_fqdn) side_b_ae_iface: str = ReadOnlyField(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface) - side_b_ae_geant_a_sid: str = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_geant_a_sid + side_b_ae_geant_a_sid: str | None = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_geant_a_sid side_b_ae_members: ae_members_side_b = ( # type: ignore[valid-type] subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members if initial_user_input.iptrunk_speed == subscription.iptrunk.iptrunk_speed @@ -154,14 +154,14 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: @step("Update subscription") def modify_iptrunk_subscription( subscription: Iptrunk, - geant_s_sid: str, + geant_s_sid: str | None, iptrunk_type: IptrunkType, iptrunk_description: str, iptrunk_speed: PhysicalPortCapacity, iptrunk_minimum_links: int, - side_a_ae_geant_a_sid: str, + side_a_ae_geant_a_sid: str | None, side_a_ae_members: list[dict], - side_b_ae_geant_a_sid: str, + side_b_ae_geant_a_sid: str | None, side_b_ae_members: list[dict], ) -> State: """Modify the subscription in the service database, reflecting the changes to the newly selected interfaces.""" diff --git a/gso/workflows/tasks/import_iptrunk.py b/gso/workflows/tasks/import_iptrunk.py index 648d954f94ae57f9471826bba04402684508de81..9c6687b35943f7316a4cf4758009598270f80b77 100644 --- a/gso/workflows/tasks/import_iptrunk.py +++ b/gso/workflows/tasks/import_iptrunk.py @@ -39,7 +39,7 @@ def initial_input_form_generator() -> FormGenerator: title = "Import Iptrunk" partner: str - geant_s_sid: str + geant_s_sid: str | None iptrunk_description: str iptrunk_type: IptrunkType iptrunk_speed: PhysicalPortCapacity @@ -48,12 +48,12 @@ def initial_input_form_generator() -> FormGenerator: side_a_node_id: router_enum # type: ignore[valid-type] side_a_ae_iface: str - side_a_ae_geant_a_sid: str + side_a_ae_geant_a_sid: str | None side_a_ae_members: UniqueConstrainedList[LAGMember] side_b_node_id: router_enum # type: ignore[valid-type] side_b_ae_iface: str - side_b_ae_geant_a_sid: str + side_b_ae_geant_a_sid: str | None side_b_ae_members: UniqueConstrainedList[LAGMember] iptrunk_ipv4_network: ipaddress.IPv4Network @@ -80,7 +80,7 @@ def create_subscription(partner: str) -> State: @step("Initialize subscription") def initialize_subscription( subscription: IptrunkInactive, - geant_s_sid: str, + geant_s_sid: str | None, iptrunk_type: IptrunkType, iptrunk_description: str, iptrunk_speed: PhysicalPortCapacity, @@ -88,11 +88,11 @@ def initialize_subscription( iptrunk_isis_metric: int, side_a_node_id: str, side_a_ae_iface: str, - side_a_ae_geant_a_sid: str, + side_a_ae_geant_a_sid: str | None, side_a_ae_members: list[dict], side_b_node_id: str, side_b_ae_iface: str, - side_b_ae_geant_a_sid: str, + side_b_ae_geant_a_sid: str | None, side_b_ae_members: list[dict], ) -> State: """Take all input from the user, and store it in the database.""" diff --git a/test/workflows/iptrunk/test_create_iptrunk.py b/test/workflows/iptrunk/test_create_iptrunk.py index 34a79604ef532c41cf141214c88b5790b810aeef..a883f0160f3a1f023dcea5e462e354f54c9e13fb 100644 --- a/test/workflows/iptrunk/test_create_iptrunk.py +++ b/test/workflows/iptrunk/test_create_iptrunk.py @@ -71,7 +71,7 @@ def input_form_wizard_data(request, juniper_router_subscription_factory, nokia_r create_ip_trunk_side_a_router_name = {"side_a_node_id": router_side_a} create_ip_trunk_side_a_step = { "side_a_ae_iface": "lag-1", - "side_a_ae_geant_a_sid": faker.geant_sid(), + "side_a_ae_geant_a_sid": None, "side_a_ae_members": [ LAGMember( interface_name=f"Interface{interface}",