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 \ ...@@ -6,8 +6,8 @@ from gso.products.product_blocks.iptrunk \
class IptrunkType(strEnum): class IptrunkType(strEnum):
dark_fiber = "dark_fiber" Dark_fiber = "Dark_fiber"
leased = "leased" Leased = "Leased"
class IptrunkInactive(SubscriptionModel, is_base=True): class IptrunkInactive(SubscriptionModel, is_base=True):
......
...@@ -46,20 +46,24 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -46,20 +46,24 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
title = product_name title = product_name
geant_s_sid: str geant_s_sid: str
iptrunk_type: iptrunk.IptrunkType
iptrunk_speed: str # This should be an enum: 1/10/100/400 iptrunk_speed: str # This should be an enum: 1/10/100/400
iptrunk_minimum_links: int iptrunk_minimum_links: int
iptrunk_sideA_fqdn: device_selector(choice_value='DeviceEnumA') iptrunk_sideA_fqdn: device_selector(choice_value='DeviceEnumA')
iptrunk_sideA_ae_iface: str iptrunk_sideA_ae_iface: str
iptrunk_sideA_ae_geant_a_sid: str
iptrunk_sideA_ae_members: list[str] iptrunk_sideA_ae_members: list[str]
iptrunk_sideB_fqdn: device_selector(choice_value='DeviceEnumB') iptrunk_sideB_fqdn: device_selector(choice_value='DeviceEnumB')
iptrunk_sideB_ae_iface: str iptrunk_sideB_ae_iface: str
iptrunk_sideB_ae_geant_a_sid: str
iptrunk_sideB_ae_members: list[str] iptrunk_sideB_ae_members: list[str]
# TODO: we need additional validation: # TODO: we need additional validation:
# sideA fqdn must be different from sideB fqdn # sideA fqdn must be different from sideB fqdn
# the lenght of iptrunk_sideA_ae_members should be the same as iptrunk_sideA_ae_members # the lenght of iptrunk_sideA_ae_members should be the same as iptrunk_sideA_ae_members
# interface names must be validated # 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 user_input = yield CreateIptrunkForm
...@@ -78,14 +82,9 @@ def create_subscription(product: UUIDstr) -> State: ...@@ -78,14 +82,9 @@ def create_subscription(product: UUIDstr) -> State:
@step("Get information from IPAM ") @step("Get information from IPAM ")
def get_info_from_ipam(subscription: iptrunk.IptrunkInactive) -> State: 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 # TODO: get info about how these should be generated
subscription.iptrunk.lo_iso_address = "49.51e5.0001.0620.4009.6047.00" subscription.iptrunk.iptrunk_ipv4_network = "192.168.1.0/31"
subscription.iptrunk.si_ipv4_network = "192.168.0.0/31" subscription.iptrunk.iptrunk_ipv6_network = "fc00:798:1::150/126"
subscription.iptrunk.ias_lt_ipv4_network = "192.168.1.0/31"
subscription.iptrunk.ias_lt_ipv6_network = "fc00:798:1::150/126"
return {"subscription": subscription} return {"subscription": subscription}
...@@ -94,15 +93,35 @@ def get_info_from_ipam(subscription: iptrunk.IptrunkInactive) -> State: ...@@ -94,15 +93,35 @@ def get_info_from_ipam(subscription: iptrunk.IptrunkInactive) -> State:
@step("Initialize subscription") @step("Initialize subscription")
def initialize_subscription( def initialize_subscription(
subscription: iptrunk.IptrunkInactive, subscription: iptrunk.IptrunkInactive,
fqdn: str, geant_s_sid: str,
ts_address: ipaddress.IPv4Address, iptrunk_type: iptrunk.IptrunkType,
ts_port: str 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: ) -> State:
subscription.iptrunk.fqdn = fqdn subscription.iptrunk_type = iptrunk_type
subscription.iptrunk.ts_address = str(ts_address)
subscription.iptrunk.ts_port = str(ts_port) subscription.iptrunk.geant_s_sid = geant_s_sid
subscription.iptrunk_vendor = iptrunk_vendor subscription.iptrunk.iptrunk_speed = iptrunk_speed
subscription.description = f"Iptrunk {fqdn} type \ 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_type})"
subscription = iptrunk.IptrunkProvisioning.from_other_lifecycle( subscription = iptrunk.IptrunkProvisioning.from_other_lifecycle(
subscription, SubscriptionLifecycle.PROVISIONING 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