Skip to content
Snippets Groups Projects
Commit 15d8d358 authored by Simone Spinelli's avatar Simone Spinelli
Browse files

Iptrunk form finished but fails with iptrunk_type

parent 81d9d92c
No related branches found
No related tags found
1 merge request!8Feature/iptrunks prototype
......@@ -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):
......
......@@ -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
......
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