Skip to content

Import layer 2 circuit

A modification workflow for migrating an ImportedLayer2Circuit to an Layer2Circuit subscription.

import_layer_2_circuit_subscription(subscription_id)

Take an imported subscription, and turn it into a layer 2 circuit subscription.

Source code in gso/workflows/l2_circuit/import_layer_2_circuit.py
@step("Create imported subscription")
def import_layer_2_circuit_subscription(subscription_id: UUIDstr) -> State:
    """Take an imported subscription, and turn it into a layer 2 circuit subscription."""
    old_layer_2_circuit_subscription = ImportedLayer2Circuit.from_subscription(subscription_id)
    if old_layer_2_circuit_subscription.layer_2_circuit_service_type == Layer2CircuitServiceType.IMPORTED_GEANT_PLUS:
        new_subscription_id = get_product_id_by_name(ProductName.GEANT_PLUS)
    elif (
        old_layer_2_circuit_subscription.layer_2_circuit_service_type == Layer2CircuitServiceType.IMPORTED_EXPRESSROUTE
    ):
        new_subscription_id = get_product_id_by_name(ProductName.EXPRESSROUTE)
    else:
        msg = f"This {old_layer_2_circuit_subscription.layer_2_circuit_service_type} is already imported."
        raise ProcessFailureError(message=msg, details=old_layer_2_circuit_subscription)
    new_subscription = Layer2Circuit.from_other_product(old_layer_2_circuit_subscription, new_subscription_id)  # type: ignore[arg-type]

    return {"subscription": new_subscription}

import_layer_2_circuit()

Modify an imported subscription into a layer 2 circuit subscription to complete the import.

Source code in gso/workflows/l2_circuit/import_layer_2_circuit.py
@workflow("Import Layer 2 Circuit", target=Target.MODIFY, initial_input_form=wrap_modify_initial_input_form(None))
def import_layer_2_circuit() -> StepList:
    """Modify an imported subscription into a layer 2 circuit subscription to complete the import."""
    return (
        init
        >> store_process_subscription(Target.MODIFY)
        >> unsync
        >> import_layer_2_circuit_subscription
        >> resync
        >> done
    )