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
Branches
Tags
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.
Please register or to comment