Skip to content

Modify r and e peer

Modification workflow for an R&E Peer subscription.

modify_input_form_generator(subscription_id)

Initial form generator for modifying the custom attributes of an existing IAS subscription.

Source code in gso/workflows/l3_core_service/r_and_e_peer/modify_r_and_e_peer.py
def modify_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
    """Initial form generator for modifying the custom attributes of an existing IAS subscription."""
    initial_generator = initial_input_form_generator(subscription_id)
    initial_user_input = yield from initial_generator

    subscription = RAndEPeer.from_subscription(subscription_id)

    # Additional R&E Peer step
    class RAndEPeerExtraForm(FormPage):
        v4_bgp_local_preference: NonNegativeInt = subscription.r_and_e_peer.v4_bgp_local_preference
        v4_bgp_med: MultiExitDiscriminator = subscription.r_and_e_peer.v4_bgp_med
        v6_bgp_local_preference: NonNegativeInt = subscription.r_and_e_peer.v6_bgp_local_preference
        v6_bgp_med: MultiExitDiscriminator = subscription.r_and_e_peer.v6_bgp_med

    r_and_e_peer_extra_form = yield RAndEPeerExtraForm
    return initial_user_input | r_and_e_peer_extra_form.model_dump()

modify_r_and_e_peer()

Modify R&E Peer subscription.

Source code in gso/workflows/l3_core_service/r_and_e_peer/modify_r_and_e_peer.py
@modify_workflow("Modify R&E Peer", initial_input_form=modify_input_form_generator)
def modify_r_and_e_peer() -> StepList:
    """Modify R&E Peer subscription."""
    access_port_is_added = conditional(lambda state: state["operation"] == Operation.ADD)
    access_port_is_removed = conditional(lambda state: state["operation"] == Operation.REMOVE)
    access_port_is_modified = conditional(lambda state: state["operation"] == Operation.EDIT)
    include_ansible_sbp = conditional(lambda state: bool(state["include_ansible_playbook_sbp_config"]))
    include_ansible_bgp = conditional(lambda state: bool(state["include_ansible_playbook_bgp_config"]))

    return (
        begin
        >> update_r_and_e_peer_subscription_model
        >> access_port_is_added(create_new_sbp)
        >> access_port_is_modified(modify_existing_sbp)
        >> populate_partner_and_scope_subscription
        >> include_ansible_sbp(lso_interaction(provision_sbp_dry))
        >> include_ansible_sbp(lso_interaction(provision_sbp_real))
        >> include_ansible_bgp(lso_interaction(deploy_bgp_peers_dry))
        >> include_ansible_bgp(lso_interaction(deploy_bgp_peers_real))
        >> access_port_is_removed(remove_old_sbp)
    )