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

Add first form for trunks

parent 4fa0140f
No related branches found
No related tags found
1 merge request!8Feature/iptrunks prototype
......@@ -14,13 +14,57 @@ from orchestrator.workflows.utils import wrap_create_initial_input_form
from gso.products.product_types import iptrunk
from gso.services import ipam, provisioning_proxy
from gso.products.product_types import device
from orchestrator.db.models import ProductTable, SubscriptionTable
from orchestrator.forms.validators import Choice, choice_list
from typing import List, Optional
def a_side_device_selector() -> list:
device_subscriptions = {}
for device_id, device_description in (
SubscriptionTable.query.join(ProductTable)
.filter(
ProductTable.product_type == "Device",
SubscriptionTable.status == "active",
)
.with_entities(SubscriptionTable.subscription_id, SubscriptionTable.description)
.all()
):
device_subscriptions[str(device_id)] = device_description
return choice_list(
Choice("DeviceEnumA", zip(device_subscriptions.keys(), device_subscriptions.items())), # type:ignore
min_items=1,
max_items=1,
)
def b_side_device_selector() -> list:
device_subscriptions = {}
for device_id, device_description in (
SubscriptionTable.query.join(ProductTable)
.filter(
ProductTable.product_type == "Device",
SubscriptionTable.status == "active",
)
.with_entities(SubscriptionTable.subscription_id, SubscriptionTable.description)
.all()
):
device_subscriptions[str(device_id)] = device_description
return choice_list(
Choice("DeviceEnumB", zip(device_subscriptions.keys(), device_subscriptions.items())), # type:ignore
min_items=1,
max_items=1,
)
def initial_input_form_generator(product_name: str) -> FormGenerator:
class CreateIptrunkForm(FormPage):
class Config:
title = product_name
fqdn: str
geant_s_sid: str
iptrunk_sideA_fqdn: a_side_device_selector()
iptrunk_sideB_fqdn: b_side_device_selector()
user_input = yield CreateIptrunkForm
......@@ -50,23 +94,6 @@ def get_info_from_ipam(subscription: iptrunk.IptrunkInactive) -> State:
return {"subscription": subscription}
@step("get information about SNMP")
def get_snmp_info(subscription: iptrunk.IptrunkInactive) -> State:
country = 'Spain'
city = 'Barcelona'
country_code = 'ES'
latitude = '41.3743'
longitude = '2.1328'
subscription.iptrunk.site_country = country
subscription.iptrunk.site_city = city
subscription.iptrunk.site_country_code = country_code
subscription.iptrunk.site_latitude = latitude
subscription.iptrunk.site_longitude = longitude
subscription.iptrunk.snmp_location = (
f'{city.upper()},{country.upper()}[{latitude},{longitude}]'
)
return {"subscription": subscription}
@step("Initialize subscription")
......@@ -183,13 +210,13 @@ def create_iptrunk():
return (
init
>> create_subscription
>> store_process_subscription(Target.CREATE)
>> get_info_from_ipam
>> get_snmp_info
>> initialize_subscription
>> provision_iptrunk_dry
>> confirm_step
>> provision_iptrunk_real
#>> store_process_subscription(Target.CREATE)
#>> get_info_from_ipam
#>> get_snmp_info
#>> initialize_subscription
#>> provision_iptrunk_dry
#>> confirm_step
#>> provision_iptrunk_real
>> set_status(SubscriptionLifecycle.ACTIVE)
>> resync
>> done
......
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