Skip to content

Shared steps

Workflow steps that are used in multiple Layer 2 Circuit workflows.

generate_fqdn_list(subscription)

Generate the list of FQDNs that this workflow should target.

This list will consist of two elements, one for each far end of the circuit.

Source code in gso/workflows/l2_circuit/shared_steps.py
@step("Generate FQDN list")
def generate_fqdn_list(subscription: Layer2Circuit) -> State:
    """Generate the list of FQDNs that this workflow should target.

    This list will consist of two elements, one for each far end of the circuit.
    """
    return {
        "fqdn_list": [
            side.sbp.edge_port.node.router_fqdn for side in subscription.layer_2_circuit.layer_2_circuit_sides
        ]
    }

extract_partner_name_from_edge_port(subscription)

Expand a subscription model of a Layer 2 Circuit.

This method will include the name of each Edge Port's partner to be used in Ansible playbooks.

Source code in gso/workflows/l2_circuit/shared_steps.py
@step("Expand subscription dictionary")
def extract_partner_name_from_edge_port(subscription: dict[str, Any]) -> State:
    """Expand a subscription model of a Layer 2 Circuit.

    This method will include the name of each Edge Port's partner to be used in Ansible playbooks.
    """
    modified_subscription = deepcopy(subscription)
    for side in modified_subscription["layer_2_circuit"]["layer_2_circuit_sides"]:
        side["sbp"]["edge_port"]["partner_name"] = get_partner_by_id(
            EdgePort.from_subscription(side["sbp"]["edge_port"]["owner_subscription_id"]).customer_id
        ).name

    return {"modified_subscription": modified_subscription}

provision_l2circuit_dry(modified_subscription, process_id, tt_number, fqdn_list)

Perform a dry run of deploying a Layer 2 Circuit.

Source code in gso/workflows/l2_circuit/shared_steps.py
@step("[DRY RUN] Deploy L2circuit")
def provision_l2circuit_dry(
    modified_subscription: dict[str, Any], process_id: UUIDstr, tt_number: str, fqdn_list: list[str]
) -> LSOState:
    """Perform a dry run of deploying a Layer 2 Circuit."""
    extra_vars = {
        "subscription": modified_subscription,
        "dry_run": True,
        "verb": "deploy",
        "commit_comment": f"GSO_PROCESS_ID: {process_id} - TT_NUMBER: {tt_number} - "
        f"Deploy config for {modified_subscription["description"]}",
    }

    return {
        "playbook_name": "gap_ansible/playbooks/l2circuit.yaml",
        "inventory": {"all": {"hosts": dict.fromkeys(fqdn_list)}},
        "extra_vars": extra_vars,
    }

provision_l2circuit_real(modified_subscription, process_id, tt_number, fqdn_list)

Perform a dry run of deploying a Layer 2 Circuit.

Source code in gso/workflows/l2_circuit/shared_steps.py
@step("[REAL RUN] Deploy L2circuit")
def provision_l2circuit_real(
    modified_subscription: dict[str, Any], process_id: UUIDstr, tt_number: str, fqdn_list: list[str]
) -> LSOState:
    """Perform a dry run of deploying a Layer 2 Circuit."""
    extra_vars = {
        "subscription": modified_subscription,
        "dry_run": False,
        "verb": "deploy",
        "commit_comment": f"GSO_PROCESS_ID: {process_id} - TT_NUMBER: {tt_number} - "
        f"Deploy config for {modified_subscription["description"]}",
    }

    return {
        "playbook_name": "gap_ansible/playbooks/l2circuit.yaml",
        "inventory": {"all": {"hosts": dict.fromkeys(fqdn_list)}},
        "extra_vars": extra_vars,
    }

terminate_l2circuit_dry(process_id, tt_number, modified_subscription, fqdn_list)

Perform a dry run of removing old configuration of a Layer 2 Circuit.

Source code in gso/workflows/l2_circuit/shared_steps.py
@step("[DRY RUN] Remove old config")
def terminate_l2circuit_dry(
    process_id: UUIDstr, tt_number: TTNumber, modified_subscription: dict[str, Any], fqdn_list: list[str]
) -> LSOState:
    """Perform a dry run of removing old configuration of a Layer 2 Circuit."""
    extra_vars = {
        "subscription": modified_subscription,
        "dry_run": True,
        "verb": "terminate",
        "commit_comment": f"GSO_PROCESS_ID: {process_id} - TT_NUMBER: {tt_number} - "
        f"Remove config for {modified_subscription["description"]}",
    }

    return {
        "playbook_name": "gap_ansible/playbooks/l2circuit.yaml",
        "inventory": {"all": {"hosts": dict.fromkeys(fqdn_list)}},
        "extra_vars": extra_vars,
    }

terminate_l2circuit_real(process_id, tt_number, modified_subscription, fqdn_list)

Remove old configuration of a Layer 2 Circuit.

Source code in gso/workflows/l2_circuit/shared_steps.py
@step("[FOR REAL] Remove old config")
def terminate_l2circuit_real(
    process_id: UUIDstr, tt_number: TTNumber, modified_subscription: dict[str, Any], fqdn_list: list[str]
) -> LSOState:
    """Remove old configuration of a Layer 2 Circuit."""
    extra_vars = {
        "subscription": modified_subscription,
        "dry_run": False,
        "verb": "terminate",
        "commit_comment": f"GSO_PROCESS_ID: {process_id} - TT_NUMBER: {tt_number} - "
        f"Remove config for {modified_subscription["description"]}",
    }

    return {
        "playbook_name": "gap_ansible/playbooks/l2circuit.yaml",
        "inventory": {"all": {"hosts": dict.fromkeys(fqdn_list)}},
        "extra_vars": extra_vars,
    }