From 2a92ad2b6d3cd2e765f797c2fc19dac02b62c144 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Wed, 6 Nov 2024 11:58:35 +0100 Subject: [PATCH] Fix a bug where ISIS metric restoration was not reflected in the subscription model of an IP trunk Update and expand unit tests accordingly --- gso/workflows/iptrunk/migrate_iptrunk.py | 1 + test/workflows/iptrunk/test_migrate_iptrunk.py | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gso/workflows/iptrunk/migrate_iptrunk.py b/gso/workflows/iptrunk/migrate_iptrunk.py index 43b43e8c..8c782fa0 100644 --- a/gso/workflows/iptrunk/migrate_iptrunk.py +++ b/gso/workflows/iptrunk/migrate_iptrunk.py @@ -631,6 +631,7 @@ def restore_isis_metric( } return { + "subscription": subscription, "playbook_name": "gap_ansible/playbooks/iptrunks.yaml", "inventory": { "all": { diff --git a/test/workflows/iptrunk/test_migrate_iptrunk.py b/test/workflows/iptrunk/test_migrate_iptrunk.py index 525ce49b..74c80af3 100644 --- a/test/workflows/iptrunk/test_migrate_iptrunk.py +++ b/test/workflows/iptrunk/test_migrate_iptrunk.py @@ -109,6 +109,7 @@ def interface_lists_are_equal(list1, list2): [UseJuniperSide.NONE, UseJuniperSide.SIDE_A, UseJuniperSide.SIDE_B, UseJuniperSide.SIDE_BOTH], indirect=True, ) +@pytest.mark.parametrize("restore_isis_metric", [True, False]) @pytest.mark.workflow() @patch("gso.services.infoblox.create_host_by_ip") @patch("gso.services.infoblox.delete_host_by_ip") @@ -122,7 +123,7 @@ def interface_lists_are_equal(list1, list2): @patch("gso.services.netbox_client.NetboxClient.free_interface") @patch("gso.services.netbox_client.NetboxClient.delete_interface") @patch("gso.workflows.iptrunk.migrate_iptrunk.SharePointClient") -def test_migrate_iptrunk_success( +def test_migrate_iptrunk_success( # noqa: PLR0915 mock_sharepoint_client, mocked_delete_interface, mocked_free_interface, @@ -136,6 +137,7 @@ def test_migrate_iptrunk_success( mock_delete_host_by_ip, mock_create_host_by_ip, migrate_form_input, + restore_isis_metric, data_config_filename: PathLike, ): # Set up mock return values @@ -150,6 +152,7 @@ def test_migrate_iptrunk_success( mocked_delete_interface.return_value = mocked_netbox.delete_interface() mock_sharepoint_client.return_value = MockedSharePointClient + migrate_form_input[1]["restore_isis_metric"] = restore_isis_metric result, process_stat, step_log = run_workflow("migrate_iptrunk", migrate_form_input) for _ in range(8): @@ -161,10 +164,10 @@ def test_migrate_iptrunk_success( for _ in range(8): result, step_log = assert_lso_interaction_success(result, process_stat, step_log) - assert_suspended(result) - result, step_log = resume_workflow(process_stat, step_log, input_data=USER_CONFIRM_EMPTY_FORM) + if restore_isis_metric: + assert_suspended(result) + result, step_log = resume_workflow(process_stat, step_log, input_data=USER_CONFIRM_EMPTY_FORM) - for _ in range(1): result, step_log = assert_lso_interaction_success(result, process_stat, step_log) # Continue workflow after it has displayed a checklist URL. @@ -178,7 +181,7 @@ def test_migrate_iptrunk_success( subscription = Iptrunk.from_subscription(subscription_id) assert subscription.status == "active" - assert mock_execute_playbook.call_count == 17 + assert mock_execute_playbook.call_count == 17 if restore_isis_metric else 16 assert mock_create_host_by_ip.call_count == 1 assert mock_delete_host_by_ip.call_count == 1 @@ -216,3 +219,4 @@ def test_migrate_iptrunk_success( assert subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface == new_lag_interface existing_members = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members assert interface_lists_are_equal(new_lag_member_interfaces, existing_members) + assert (subscription.iptrunk.iptrunk_isis_metric == 999999) != restore_isis_metric -- GitLab