Skip to content
Snippets Groups Projects
Commit f11acd44 authored by Neda Moeini's avatar Neda Moeini Committed by Mohammad Torkashvand
Browse files

Update create Iptrunk WF

parent 66bf227e
No related branches found
No related tags found
1 merge request!324Feature/manage sid and gids
...@@ -57,7 +57,11 @@ from gso.services.lso_client import LSOState, lso_interaction ...@@ -57,7 +57,11 @@ from gso.services.lso_client import LSOState, lso_interaction
from gso.services.netbox_client import NetboxClient from gso.services.netbox_client import NetboxClient
from gso.services.partners import get_partner_by_name from gso.services.partners import get_partner_by_name
from gso.services.sharepoint import SharePointClient from gso.services.sharepoint import SharePointClient
from gso.services.subscriptions import get_non_terminated_iptrunk_subscriptions from gso.services.subscriptions import (
generate_unique_ga_id,
generate_unique_gs_id,
get_non_terminated_iptrunk_subscriptions,
)
from gso.settings import load_oss_params from gso.settings import load_oss_params
from gso.utils.helpers import ( from gso.utils.helpers import (
available_interfaces_choices, available_interfaces_choices,
...@@ -86,7 +90,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -86,7 +90,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
tt_number: TTNumber tt_number: TTNumber
partner: ReadOnlyField("GEANT", default_type=str) # type: ignore[valid-type] partner: ReadOnlyField("GEANT", default_type=str) # type: ignore[valid-type]
gs_id: str | None = None
iptrunk_description: str | None = None iptrunk_description: str | None = None
iptrunk_type: IptrunkType iptrunk_type: IptrunkType
iptrunk_speed: PhysicalPortCapacity iptrunk_speed: PhysicalPortCapacity
...@@ -144,7 +147,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -144,7 +147,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
model_config = ConfigDict(title=f"Provide subscription details for side A of the trunk. ({router_a_fqdn})") model_config = ConfigDict(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_iface: available_lags_choices(router_a) or str # type: ignore[valid-type]
side_a_ga_id: str | None
side_a_ae_members: ae_members_side_a_type side_a_ae_members: ae_members_side_a_type
user_input_side_a = yield CreateIptrunkSideAForm user_input_side_a = yield CreateIptrunkSideAForm
...@@ -182,7 +184,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -182,7 +184,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
model_config = ConfigDict(title=f"Provide subscription details for side B of the trunk. ({router_b_fqdn})") model_config = ConfigDict(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_iface: available_lags_choices(router_b) or str # type: ignore[valid-type]
side_b_ga_id: str | None
side_b_ae_members: ae_members_side_b side_b_ae_members: ae_members_side_b
user_input_side_b = yield CreateIptrunkSideBForm user_input_side_b = yield CreateIptrunkSideBForm
...@@ -196,7 +197,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -196,7 +197,6 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
) )
summary_form_data = input_forms_data | {"side_a_node": router_a_fqdn, "side_b_node": router_b_fqdn} summary_form_data = input_forms_data | {"side_a_node": router_a_fqdn, "side_b_node": router_b_fqdn}
summary_fields = [ summary_fields = [
"gs_id",
"iptrunk_type", "iptrunk_type",
"iptrunk_speed", "iptrunk_speed",
"iptrunk_description", "iptrunk_description",
...@@ -204,11 +204,9 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -204,11 +204,9 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
"side_a_node", "side_a_node",
"side_a_ae_iface", "side_a_ae_iface",
"side_a_ae_members", "side_a_ae_members",
"side_a_ga_id",
"side_b_node", "side_b_node",
"side_b_ae_iface", "side_b_ae_iface",
"side_b_ae_members", "side_b_ae_members",
"side_b_ga_id",
] ]
yield from create_summary_form(summary_form_data, product_name, summary_fields) yield from create_summary_form(summary_form_data, product_name, summary_fields)
...@@ -322,24 +320,22 @@ def ping_all_hosts_v6(new_ipv6_network: str) -> State: ...@@ -322,24 +320,22 @@ def ping_all_hosts_v6(new_ipv6_network: str) -> State:
@step("Initialize subscription") @step("Initialize subscription")
def initialize_subscription( def initialize_subscription(
subscription: IptrunkInactive, subscription: IptrunkInactive,
gs_id: str | None,
iptrunk_type: IptrunkType, iptrunk_type: IptrunkType,
iptrunk_description: str | None, iptrunk_description: str | None,
iptrunk_speed: PhysicalPortCapacity, iptrunk_speed: PhysicalPortCapacity,
iptrunk_minimum_links: int, iptrunk_minimum_links: int,
side_a_node_id: str, side_a_node_id: str,
side_a_ae_iface: str, side_a_ae_iface: str,
side_a_ga_id: str | None,
side_a_ae_members: list[dict], side_a_ae_members: list[dict],
side_b_node_id: str, side_b_node_id: str,
side_b_ae_iface: str, side_b_ae_iface: str,
side_b_ga_id: str | None,
side_b_ae_members: list[dict], side_b_ae_members: list[dict],
) -> State: ) -> State:
"""Take all input from the user, and store it in the database.""" """Take all input from the user, and store it in the database."""
oss_params = load_oss_params() oss_params = load_oss_params()
side_a = Router.from_subscription(side_a_node_id).router side_a = Router.from_subscription(side_a_node_id).router
side_b = Router.from_subscription(side_b_node_id).router side_b = Router.from_subscription(side_b_node_id).router
gs_id = generate_unique_gs_id()
subscription.iptrunk.gs_id = gs_id subscription.iptrunk.gs_id = gs_id
subscription.iptrunk.iptrunk_description = iptrunk_description subscription.iptrunk.iptrunk_description = iptrunk_description
subscription.iptrunk.iptrunk_type = iptrunk_type subscription.iptrunk.iptrunk_type = iptrunk_type
...@@ -349,6 +345,7 @@ def initialize_subscription( ...@@ -349,6 +345,7 @@ def initialize_subscription(
subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node = side_a subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node = side_a
subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface = side_a_ae_iface subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface = side_a_ae_iface
side_a_ga_id = generate_unique_ga_id()
subscription.iptrunk.iptrunk_sides[0].ga_id = side_a_ga_id subscription.iptrunk.iptrunk_sides[0].ga_id = side_a_ga_id
for member in side_a_ae_members: for member in side_a_ae_members:
subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members.append( subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members.append(
...@@ -357,6 +354,7 @@ def initialize_subscription( ...@@ -357,6 +354,7 @@ def initialize_subscription(
subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node = side_b subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node = side_b
subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface = side_b_ae_iface subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface = side_b_ae_iface
side_b_ga_id = generate_unique_ga_id()
subscription.iptrunk.iptrunk_sides[1].ga_id = side_b_ga_id subscription.iptrunk.iptrunk_sides[1].ga_id = side_b_ga_id
for member in side_b_ae_members: for member in side_b_ae_members:
subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members.append( subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members.append(
......
...@@ -65,7 +65,6 @@ def input_form_wizard_data(request, router_subscription_factory, faker): ...@@ -65,7 +65,6 @@ def input_form_wizard_data(request, router_subscription_factory, faker):
create_ip_trunk_step = { create_ip_trunk_step = {
"tt_number": faker.tt_number(), "tt_number": faker.tt_number(),
"gs_id": faker.geant_sid(),
"iptrunk_type": IptrunkType.DARK_FIBER, "iptrunk_type": IptrunkType.DARK_FIBER,
"iptrunk_description": faker.sentence(), "iptrunk_description": faker.sentence(),
"iptrunk_speed": PhysicalPortCapacity.HUNDRED_GIGABIT_PER_SECOND, "iptrunk_speed": PhysicalPortCapacity.HUNDRED_GIGABIT_PER_SECOND,
...@@ -75,7 +74,6 @@ def input_form_wizard_data(request, router_subscription_factory, faker): ...@@ -75,7 +74,6 @@ def input_form_wizard_data(request, router_subscription_factory, faker):
create_ip_trunk_side_a_router_name = {"side_a_node_id": router_side_a} create_ip_trunk_side_a_router_name = {"side_a_node_id": router_side_a}
create_ip_trunk_side_a_step = { create_ip_trunk_side_a_step = {
"side_a_ae_iface": "lag-1", "side_a_ae_iface": "lag-1",
"side_a_ga_id": None,
"side_a_ae_members": [ "side_a_ae_members": [
{ {
"interface_name": f"Interface{interface}", "interface_name": f"Interface{interface}",
...@@ -87,7 +85,6 @@ def input_form_wizard_data(request, router_subscription_factory, faker): ...@@ -87,7 +85,6 @@ def input_form_wizard_data(request, router_subscription_factory, faker):
create_ip_trunk_side_b_router_name = {"side_b_node_id": router_side_b} create_ip_trunk_side_b_router_name = {"side_b_node_id": router_side_b}
create_ip_trunk_side_b_step = { create_ip_trunk_side_b_step = {
"side_b_ae_iface": "lag-4", "side_b_ae_iface": "lag-4",
"side_b_ga_id": faker.geant_sid(),
"side_b_ae_members": side_b_members, "side_b_ae_members": side_b_members,
} }
summary_view_step = {} summary_view_step = {}
...@@ -153,8 +150,9 @@ def test_successful_iptrunk_creation_with_standard_lso_result( ...@@ -153,8 +150,9 @@ def test_successful_iptrunk_creation_with_standard_lso_result(
subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_site.site_name, subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_site.site_name,
]) ])
assert subscription.status == "provisioning" assert subscription.status == "provisioning"
assert subscription.iptrunk.gs_id is not None
assert subscription.description == ( assert subscription.description == (
f"IP trunk {sorted_sides[0]} {sorted_sides[1]}, gs_id:{input_form_wizard_data[0]["gs_id"]}" f"IP trunk {sorted_sides[0]} {sorted_sides[1]}, gs_id:{subscription.iptrunk.gs_id}"
) )
assert mock_execute_playbook.call_count == 6 assert mock_execute_playbook.call_count == 6
......
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