diff --git a/gso/translations/en-GB.json b/gso/translations/en-GB.json index 1efdbe0e4aac5d620fea211839a843d1b9c5b5ae..4fe3a15c1782c16e2ba1a889e724bb72b6d7a85b 100644 --- a/gso/translations/en-GB.json +++ b/gso/translations/en-GB.json @@ -31,7 +31,8 @@ "iptrunk_sideB_ae_members_descriptions": "Aggregated Ethernet member interface descriptions", "migrate_to_different_site": "Migrating to a different Site", "remove_configuration": "Remove configuration from the router", - "clean_up_ipam": "Clean up related entries in IPAM" + "clean_up_ipam": "Clean up related entries in IPAM", + "restore_isis_metric": "Restore ISIS metric to original value" } }, "workflow": { diff --git a/gso/workflows/iptrunk/migrate_iptrunk.py b/gso/workflows/iptrunk/migrate_iptrunk.py index 383a8189a150097aa6c0a361997c2b31a50761a8..55bde271934ccb339429af052f1a3bb6e1ea7773 100644 --- a/gso/workflows/iptrunk/migrate_iptrunk.py +++ b/gso/workflows/iptrunk/migrate_iptrunk.py @@ -16,7 +16,7 @@ from orchestrator.forms import FormPage from orchestrator.forms.validators import Choice, Label, UniqueConstrainedList from orchestrator.targets import Target from orchestrator.types import FormGenerator, State, UUIDstr -from orchestrator.workflow import StepList, done, init, inputstep +from orchestrator.workflow import StepList, conditional, done, init, inputstep from orchestrator.workflows.steps import resync, store_process_subscription, unsync from orchestrator.workflows.utils import wrap_modify_initial_input_form from pydantic import validator @@ -68,6 +68,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: replace_side: replaced_side_enum # type: ignore[valid-type] warning_label: Label = "Are we moving to a different Site?" # type: ignore[assignment] migrate_to_different_site: bool = False + restore_isis_metric: bool = True migrate_form_input = yield IPTrunkMigrateForm @@ -575,6 +576,8 @@ def migrate_iptrunk() -> StepList: TODO: add interface checks """ + should_restore_isis_metric = conditional(lambda state: state["restore_isis_metric"]) + return ( init >> store_process_subscription(Target.MODIFY) @@ -587,8 +590,8 @@ def migrate_iptrunk() -> StepList: >> pp_interaction(deploy_new_config_real) >> confirm_continue_move_fiber >> pp_interaction(deploy_new_isis) - >> confirm_continue_restore_isis - >> pp_interaction(restore_isis_metric) + >> should_restore_isis_metric(confirm_continue_restore_isis) + >> should_restore_isis_metric(pp_interaction(restore_isis_metric)) >> pp_interaction(delete_old_config_dry) >> pp_interaction(delete_old_config_real) >> update_ipam