from orchestrator.forms import FormPage from orchestrator.forms.validators import Label from orchestrator.targets import Target from orchestrator.types import InputForm, SubscriptionLifecycle, UUIDstr from orchestrator.workflow import done, init, step, workflow from orchestrator.workflows.steps import resync, set_status, store_process_subscription, unsync from orchestrator.workflows.utils import wrap_modify_initial_input_form from products import Trunk def initial_input_form_generator(subscription_id: UUIDstr, organisation: UUIDstr) -> InputForm: subscription = Trunk.from_subscription(subscription_id) class TerminateForm(FormPage): are_you_sure: Label = f"Are you sure you want to remove {subscription.description}?" # type:ignore return TerminateForm def _deprovision_in_gap(trunk_id: int) -> int: pass @step("Deprovision trunk") def deprovision_trunk(subscription: Trunk) -> None: _deprovision_in_gap(subscription.trunk.trunk_id) @workflow( "Terminate trunk", initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator), target=Target.TERMINATE, ) def terminate_trunk(): return ( init >> store_process_subscription(Target.TERMINATE) >> unsync >> deprovision_trunk >> set_status(SubscriptionLifecycle.TERMINATED) >> resync >> done )