Skip to content
Snippets Groups Projects
Commit 54accc7d authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

get POC migration intake form working

parent 0b2cea58
No related branches found
No related tags found
1 merge request!64new IP trunk migration
......@@ -2,17 +2,16 @@ import re
from typing import NoReturn
from orchestrator import step, workflow
from orchestrator.db import SubscriptionTable, ProductTable
from orchestrator.db import ProductTable, SubscriptionTable
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Choice, UniqueConstrainedList
from orchestrator.targets import Target
from orchestrator.types import UUIDstr, FormGenerator
from orchestrator.workflow import StepList, init, done
from orchestrator.workflows.steps import store_process_subscription, unsync, resync
from orchestrator.types import FormGenerator, State, UUIDstr
from orchestrator.workflow import StepList, done, init
from orchestrator.workflows.steps import resync, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
from pydantic import validator
from products import Iptrunk
from pydantic import validator
def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
......@@ -20,15 +19,18 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
routers = {}
for router_id, router_description in (
SubscriptionTable.query.join(ProductTable)
.filter(
ProductTable.product_type == "Router",
SubscriptionTable.status == "active",
)
.with_entities(SubscriptionTable.subscription_id, SubscriptionTable.description)
.all()
SubscriptionTable.query.join(ProductTable)
.filter(
ProductTable.product_type == "Router",
SubscriptionTable.status == "active",
)
.with_entities(SubscriptionTable.subscription_id, SubscriptionTable.description)
.all()
):
if router_id not in [subscription.iptrunk.iptrunk_sideA_node, subscription.iptrunk.iptrunk_sideB_node]:
if router_id not in [
subscription.iptrunk.iptrunk_sideA_node.subscription.subscription_id,
subscription.iptrunk.iptrunk_sideB_node.subscription.subscription_id,
]:
routers[str(router_id)] = router_description
NewRouterEnum = Choice("Select a new router", zip(routers.keys(), routers.items())) # type: ignore
......@@ -39,17 +41,24 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
class ModifyIptrunkForm(FormPage):
class Config:
title = f"Subscription {subscription.iptrunk.geant_s_sid} from " \
f"{subscription.iptrunk.iptrunk_sideA_node.router_fqdn} to " \
f"{subscription.iptrunk.iptrunk_sideB_node.router_fqdn}"
title = (
f"Subscription {subscription.iptrunk.geant_s_sid} from "
f"{subscription.iptrunk.iptrunk_sideA_node.router_fqdn} to "
f"{subscription.iptrunk.iptrunk_sideB_node.router_fqdn}"
)
replace_side = Choice("Select the side of the IP trunk to be replaced",
[subscription.iptrunk.iptrunk_sideA_node, subscription.iptrunk.iptrunk_sideB_node])
replace_side = Choice(
"Select the side of the IP trunk to be replaced",
[ # type: ignore
(subscription.iptrunk.iptrunk_sideA_node.router_fqdn, subscription.iptrunk.iptrunk_sideA_node),
(subscription.iptrunk.iptrunk_sideB_node.router_fqdn, subscription.iptrunk.iptrunk_sideB_node),
],
)
new_node: NewRouterEnum # type: ignore
new_lag_interface: str
new_lag_member_interfaces = LagMemberList
@validator("new_lag_interface", pre=True, always=True)
@validator("new_lag_interface", allow_reuse=True, pre=True, always=True)
def lag_interface_proper_name(cls, new_lag_name: str) -> str | NoReturn:
nokia_lag_re = re.compile("^lag-\\d+$")
juniper_lag_re = re.compile("^ae\\d{1,2}$")
......@@ -59,12 +68,14 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
raise ValueError("Invalid LAG name, please try again.")
yield ModifyIptrunkForm
user_input = yield ModifyIptrunkForm
return user_input.dict()
@step("Hilversum Stinks")
def temp_test_step(subscription: Iptrunk) -> Iptrunk:
return subscription
def temp_test_step(subscription: Iptrunk) -> State:
return {"test": subscription}
@workflow(
......@@ -73,11 +84,4 @@ def temp_test_step(subscription: Iptrunk) -> Iptrunk:
target=Target.MODIFY,
)
def migrate_iptrunk() -> StepList:
return (
init
>> store_process_subscription(Target.MODIFY)
>> unsync
>> temp_test_step
>> resync
>> done
)
return init >> store_process_subscription(Target.MODIFY) >> unsync >> temp_test_step >> 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