diff --git a/gso/products/product_types/iptrunk.py b/gso/products/product_types/iptrunk.py index 3cb4909b7a50196f39372f1029de89f4c82f44cd..0ffeec02fe54bdcdd889608a4d5c77ed19c5b299 100644 --- a/gso/products/product_types/iptrunk.py +++ b/gso/products/product_types/iptrunk.py @@ -6,8 +6,8 @@ from gso.products.product_blocks.iptrunk \ class IptrunkType(strEnum): - dark_fiber = "dark_fiber" - leased = "leased" + Dark_fiber = "Dark_fiber" + Leased = "Leased" class IptrunkInactive(SubscriptionModel, is_base=True): diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py index 73be339358b0fab7aac15801840a85464c9aa521..4a87ceaa4b0ddb4dc2f8f03e775c666a8e9887eb 100644 --- a/gso/workflows/iptrunk/create_iptrunk.py +++ b/gso/workflows/iptrunk/create_iptrunk.py @@ -46,20 +46,24 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: title = product_name geant_s_sid: str + iptrunk_type: iptrunk.IptrunkType iptrunk_speed: str # This should be an enum: 1/10/100/400 iptrunk_minimum_links: int iptrunk_sideA_fqdn: device_selector(choice_value='DeviceEnumA') iptrunk_sideA_ae_iface: str + iptrunk_sideA_ae_geant_a_sid: str iptrunk_sideA_ae_members: list[str] iptrunk_sideB_fqdn: device_selector(choice_value='DeviceEnumB') iptrunk_sideB_ae_iface: str + iptrunk_sideB_ae_geant_a_sid: str iptrunk_sideB_ae_members: list[str] # TODO: we need additional validation: # sideA fqdn must be different from sideB fqdn # the lenght of iptrunk_sideA_ae_members should be the same as iptrunk_sideA_ae_members # interface names must be validated + # We also need additional fields like a "name" or a description for trunk itself and for all the members user_input = yield CreateIptrunkForm @@ -78,14 +82,9 @@ def create_subscription(product: UUIDstr) -> State: @step("Get information from IPAM ") def get_info_from_ipam(subscription: iptrunk.IptrunkInactive) -> State: - lo = ipam.new_iptrunk_lo_address() - subscription.iptrunk.lo_ipv4_address = lo.v4 - subscription.iptrunk.lo_ipv6_address = lo.v6 # TODO: get info about how these should be generated - subscription.iptrunk.lo_iso_address = "49.51e5.0001.0620.4009.6047.00" - subscription.iptrunk.si_ipv4_network = "192.168.0.0/31" - subscription.iptrunk.ias_lt_ipv4_network = "192.168.1.0/31" - subscription.iptrunk.ias_lt_ipv6_network = "fc00:798:1::150/126" + subscription.iptrunk.iptrunk_ipv4_network = "192.168.1.0/31" + subscription.iptrunk.iptrunk_ipv6_network = "fc00:798:1::150/126" return {"subscription": subscription} @@ -94,15 +93,35 @@ def get_info_from_ipam(subscription: iptrunk.IptrunkInactive) -> State: @step("Initialize subscription") def initialize_subscription( subscription: iptrunk.IptrunkInactive, - fqdn: str, - ts_address: ipaddress.IPv4Address, - ts_port: str + geant_s_sid: str, + iptrunk_type: iptrunk.IptrunkType, + iptrunk_speed: str, + iptrunk_minimum_links: int, + iptrunk_sideA_fqdn: str, + iptrunk_sideA_ae_iface: str, + iptrunk_sideA_ae_geant_a_sid: str, + iptrunk_sideA_ae_members: list[str], + iptrunk_sideB_fqdn: str, + iptrunk_sideB_ae_iface: str, + iptrunk_sideB_ae_geant_a_sid: str, + iptrunk_sideB_ae_members: list[str] ) -> State: - subscription.iptrunk.fqdn = fqdn - subscription.iptrunk.ts_address = str(ts_address) - subscription.iptrunk.ts_port = str(ts_port) - subscription.iptrunk_vendor = iptrunk_vendor - subscription.description = f"Iptrunk {fqdn} type \ + subscription.iptrunk_type = iptrunk_type + + subscription.iptrunk.geant_s_sid = geant_s_sid + subscription.iptrunk.iptrunk_speed = iptrunk_speed + subscription.iptrunk.iptrunk_minimum_links = iptrunk_minimum_links + + subscription.iptrunk.iptrunk_sideA_fqdn = iptrunk_sideA_fqdn + subscription.iptrunk.iptrunk_sideA_ae_iface = iptrunk_sideA_ae_iface + subscription.iptrunk.iptrunk_sideA_ae_geant_a_sid = iptrunk_sideA_ae_geant_a_sid + subscription.iptrunk.iptrunk_sideA_ae_members = iptrunk_sideA_ae_members + + subscription.iptrunk.iptrunk_sideB_fqdn = iptrunk_sideB_fqdn + subscription.iptrunk.iptrunk_sideB_ae_iface = iptrunk_sideB_ae_iface + subscription.iptrunk.iptrunk_sideB_ae_geant_a_sid = iptrunk_sideB_ae_geant_a_sid + subscription.iptrunk.iptrunk_sideB_ae_members = iptrunk_sideB_ae_members + subscription.description = f"Iptrunk {geant_s_sid}: \ ({subscription.iptrunk_type})" subscription = iptrunk.IptrunkProvisioning.from_other_lifecycle( subscription, SubscriptionLifecycle.PROVISIONING