From 02b7a5cbb40eb8154b2a3eec8d0147e9a3119080 Mon Sep 17 00:00:00 2001 From: Aleksandr Kurbatov <ak@geant.org> Date: Thu, 9 Jan 2025 12:24:16 +0000 Subject: [PATCH] `promote_p_to_pe`: PE static routes as a separate step --- gso/workflows/router/promote_p_to_pe.py | 38 +++++++++++++++++++ test/workflows/router/test_promote_p_to_pe.py | 4 +- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/gso/workflows/router/promote_p_to_pe.py b/gso/workflows/router/promote_p_to_pe.py index 8fdc746f..9df27c97 100644 --- a/gso/workflows/router/promote_p_to_pe.py +++ b/gso/workflows/router/promote_p_to_pe.py @@ -246,6 +246,42 @@ def delete_default_routes_real(subscription: dict[str, Any], tt_number: str, pro } +@step("[DRY RUN] Add PE static routes") +def add_pe_static_routes_dry(subscription: dict[str, Any], tt_number: str, process_id: UUIDstr) -> LSOState: + """Perform a dry run of adding the PE static routes.""" + extra_vars = { + "dry_run": True, + "subscription": subscription, + "commit_comment": f"GSO_PROCESS_ID: {process_id} - TT_NUMBER: {tt_number} - " + f"Delete static default routes (part of P base-config)", + "verb": "add_pe_static_routes", + } + + return { + "playbook_name": "gap_ansible/playbooks/promote_p_to_pe.yaml", + "inventory": {"all": {"hosts": {subscription["router"]["router_fqdn"]: None}}}, + "extra_vars": extra_vars, + } + + +@step("[FOR REAL] Add PE static routes") +def add_pe_static_routes_real(subscription: dict[str, Any], tt_number: str, process_id: UUIDstr) -> LSOState: + """Perform a real run of adding the PE static routes.""" + extra_vars = { + "dry_run": False, + "subscription": subscription, + "commit_comment": f"GSO_PROCESS_ID: {process_id} - TT_NUMBER: {tt_number} - " + f"Delete static default routes (part of P base-config)", + "verb": "add_pe_static_routes", + } + + return { + "playbook_name": "gap_ansible/playbooks/promote_p_to_pe.yaml", + "inventory": {"all": {"hosts": {subscription["router"]["router_fqdn"]: None}}}, + "extra_vars": extra_vars, + } + + @workflow( "Promote P router to PE router", initial_input_form=wrap_modify_initial_input_form(initial_input_form_generator), @@ -280,6 +316,8 @@ def promote_p_to_pe() -> StepList: >> lso_interaction(add_pe_to_all_p_real) >> lso_interaction(delete_default_routes_dry) >> lso_interaction(delete_default_routes_real) + >> lso_interaction(add_pe_static_routes_dry) + >> lso_interaction(add_pe_static_routes_real) >> lso_interaction(run_post_checks) >> update_subscription_model >> resync diff --git a/test/workflows/router/test_promote_p_to_pe.py b/test/workflows/router/test_promote_p_to_pe.py index 9446d17c..3a8d3be9 100644 --- a/test/workflows/router/test_promote_p_to_pe.py +++ b/test/workflows/router/test_promote_p_to_pe.py @@ -40,11 +40,11 @@ def test_promote_p_to_pe_success( for _ in range(3): result, step_log = assert_lso_interaction_success(result, process_stat, step_log) result, step_log = resume_workflow(process_stat, step_log, input_data=USER_CONFIRM_EMPTY_FORM) - for _ in range(19): + for _ in range(21): result, step_log = assert_lso_interaction_success(result, process_stat, step_log) state = extract_state(result) assert_complete(result) - assert mock_execute_playbook.call_count == 22 + assert mock_execute_playbook.call_count == 24 assert state["subscription"]["router"]["router_role"] == RouterRole.PE -- GitLab