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

Make generation of new virtual circuit ID optional in layer 2 circuit migration workflow

parent 39629588
No related branches found
No related tags found
1 merge request!406Make generation of new virtual circuit ID optional in layer 2 circuit migration workflow
Pipeline #93340 passed
...@@ -87,6 +87,7 @@ def input_form_generator(subscription_id: UUIDstr) -> FormGenerator: ...@@ -87,6 +87,7 @@ def input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
model_config = ConfigDict(title="Migrating Layer 2 Circuit") model_config = ConfigDict(title="Migrating Layer 2 Circuit")
new_edge_port: active_edge_port_selector(partner_id=replace_side_partner.partner_id) # type: ignore[valid-type] new_edge_port: active_edge_port_selector(partner_id=replace_side_partner.partner_id) # type: ignore[valid-type]
generate_new_vc_id: bool = False
user_input = yield SelectNewEdgePortForm user_input = yield SelectNewEdgePortForm
...@@ -98,11 +99,17 @@ def input_form_generator(subscription_id: UUIDstr) -> FormGenerator: ...@@ -98,11 +99,17 @@ def input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
"subscription_id": subscription_id, "subscription_id": subscription_id,
"old_edge_port": initial_user_input.replace_side, "old_edge_port": initial_user_input.replace_side,
"new_edge_port": user_input.new_edge_port, "new_edge_port": user_input.new_edge_port,
"generate_new_vc_id": user_input.generate_new_vc_id,
} }
@step("Update subscription model") @step("Update subscription model")
def update_subscription_model(subscription: Layer2Circuit, old_edge_port: UUIDstr, new_edge_port: UUIDstr) -> State: def update_subscription_model(
subscription: Layer2Circuit,
old_edge_port: UUIDstr,
new_edge_port: UUIDstr,
generate_new_vc_id: bool, # noqa: FBT001
) -> State:
"""Replace the old Edge Port with the newly selected one in the subscription model.""" """Replace the old Edge Port with the newly selected one in the subscription model."""
replace_index = ( replace_index = (
0 0
...@@ -114,12 +121,12 @@ def update_subscription_model(subscription: Layer2Circuit, old_edge_port: UUIDst ...@@ -114,12 +121,12 @@ def update_subscription_model(subscription: Layer2Circuit, old_edge_port: UUIDst
new_edge_port new_edge_port
).edge_port ).edge_port
vc_id = generate_unique_vc_id(l2c_type=subscription.layer_2_circuit.layer_2_circuit_type) if generate_new_vc_id:
if not vc_id: vc_id = generate_unique_vc_id(l2c_type=subscription.layer_2_circuit.layer_2_circuit_type)
msg = "Failed to generate unique Virtual Circuit ID." if not vc_id:
raise ProcessFailureError(msg) msg = "Failed to generate unique Virtual Circuit ID."
raise ProcessFailureError(msg)
subscription.layer_2_circuit.virtual_circuit_id = vc_id subscription.layer_2_circuit.virtual_circuit_id = vc_id
return {"subscription": subscription} return {"subscription": subscription}
......
...@@ -12,9 +12,11 @@ from test.workflows import assert_complete, assert_lso_interaction_success, extr ...@@ -12,9 +12,11 @@ from test.workflows import assert_complete, assert_lso_interaction_success, extr
@pytest.mark.parametrize("layer_2_circuit_service_type", LAYER_2_CIRCUIT_SERVICE_TYPES) @pytest.mark.parametrize("layer_2_circuit_service_type", LAYER_2_CIRCUIT_SERVICE_TYPES)
@pytest.mark.parametrize("run_old_side_ansible", [False, True]) @pytest.mark.parametrize("run_old_side_ansible", [False, True])
@pytest.mark.parametrize("run_new_side_ansible", [False, True]) @pytest.mark.parametrize("run_new_side_ansible", [False, True])
@pytest.mark.parametrize("generate_new_vc_id", [False, True])
@patch("gso.services.lso_client._send_request") @patch("gso.services.lso_client._send_request")
def test_migrate_layer_2_circuit( def test_migrate_layer_2_circuit(
mock_lso_interaction, mock_lso_interaction,
generate_new_vc_id,
run_new_side_ansible, run_new_side_ansible,
run_old_side_ansible, run_old_side_ansible,
layer_2_circuit_service_type, layer_2_circuit_service_type,
...@@ -31,6 +33,7 @@ def test_migrate_layer_2_circuit( ...@@ -31,6 +33,7 @@ def test_migrate_layer_2_circuit(
) )
new_edge_port = edge_port_subscription_factory(node=side_b_router.router) new_edge_port = edge_port_subscription_factory(node=side_b_router.router)
old_vc_id = subscription.layer_2_circuit.virtual_circuit_id
initial_layer_2_circuit_data = [ initial_layer_2_circuit_data = [
{"subscription_id": subscription.subscription_id}, {"subscription_id": subscription.subscription_id},
{ {
...@@ -40,7 +43,10 @@ def test_migrate_layer_2_circuit( ...@@ -40,7 +43,10 @@ def test_migrate_layer_2_circuit(
"run_old_side_ansible": run_old_side_ansible, "run_old_side_ansible": run_old_side_ansible,
"run_new_side_ansible": run_new_side_ansible, "run_new_side_ansible": run_new_side_ansible,
}, },
{"new_edge_port": new_edge_port.subscription_id}, {
"new_edge_port": new_edge_port.subscription_id,
"generate_new_vc_id": generate_new_vc_id,
},
] ]
result, process_stat, step_log = run_workflow("migrate_layer_2_circuit", initial_layer_2_circuit_data) result, process_stat, step_log = run_workflow("migrate_layer_2_circuit", initial_layer_2_circuit_data)
...@@ -70,3 +76,4 @@ def test_migrate_layer_2_circuit( ...@@ -70,3 +76,4 @@ def test_migrate_layer_2_circuit(
assert replaced_edge_port.edge_port_ae_members[1].model_dump( assert replaced_edge_port.edge_port_ae_members[1].model_dump(
exclude="owner_subscription_id" exclude="owner_subscription_id"
) == new_edge_port.edge_port.edge_port_ae_members[1].model_dump(exclude="owner_subscription_id") ) == new_edge_port.edge_port.edge_port_ae_members[1].model_dump(exclude="owner_subscription_id")
assert (old_vc_id == subscription.layer_2_circuit.virtual_circuit_id) is not generate_new_vc_id
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment