Skip to content

Create ias

Create a new IAS workflow.

initial_input_form_generator(product_name)

Initial input form generator for creating a new IAS subscription.

Source code in gso/workflows/l3_core_service/ias/create_ias.py
def initial_input_form_generator(product_name: str) -> FormGenerator:
    """Initial input form generator for creating a new IAS subscription."""
    initial_generator = base_initial_input_form_generator(product_name)
    initial_user_input = yield from initial_generator

    # Additional IAS step
    class IASExtraForm(FormPage):
        ias_flavor: IASFlavor | str = IASFlavor.IAS_PS_OPT_OUT  # TODO: remove type hint workaround

    ias_extra = yield IASExtraForm
    return initial_user_input | ias_extra.model_dump()

create_subscription(product, partner)

Create a new subscription object in the database.

Source code in gso/workflows/l3_core_service/ias/create_ias.py
@step("Create subscription")
def create_subscription(product: UUIDstr, partner: str) -> State:
    """Create a new subscription object in the database."""
    subscription = IASInactive.from_product_id(product, partner)

    return {"subscription": subscription, "subscription_id": subscription.subscription_id}

create_ias()

Create a new IAS subscription.

Source code in gso/workflows/l3_core_service/ias/create_ias.py
@workflow(
    "Create IAS",
    initial_input_form=wrap_create_initial_input_form(initial_input_form_generator),
    target=Target.CREATE,
)
def create_ias() -> StepList:
    """Create a new IAS subscription."""
    return (
        begin
        >> create_subscription
        >> store_process_subscription(Target.CREATE)
        >> initialize_subscription
        >> update_ias_subscription_model
        >> start_moodi()
        >> lso_interaction(provision_sbp_dry)
        >> lso_interaction(provision_sbp_real)
        >> lso_interaction(check_sbp_functionality)
        >> lso_interaction(deploy_bgp_peers_dry)
        >> lso_interaction(deploy_bgp_peers_real)
        >> lso_interaction(check_bgp_peers)
        >> update_dns_records
        >> set_status(SubscriptionLifecycle.ACTIVE)
        >> resync
        >> create_new_sharepoint_checklist
        >> prompt_sharepoint_checklist_url
        >> stop_moodi()
        >> done
    )