spad.site-creation-azure ​
Provisions Azure Blob Storage + Front Door Standard infrastructure for a SPAD site
DAG-based site creation workflow for Azure-backed SPAD sites. Provisions Blob Storage + Azure Front Door Standard + RBAC restriction + Azure DNS CNAME.
Overview ​
| Property | Value |
|---|---|
| Workflow type | Dag |
| Library | App-spad |
| Version | 1.0 |
Input Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
site_uuid | string | Yes | — | ID of the SPAD site |
organization_uuid | string | No | — | Organization ID |
slug | string | Yes | — | Site slug/identifier |
cloud_connection_uuid | string | Yes | — | Azure cloud connection ID |
azure_custom_domain | string | No | — | Custom domain to attach to Front Door (e.g. cdn.example.com) |
dns_zone_ref | string | No | — | Azure DNS zone name (e.g. example.com) |
Output Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
site_uuid | string | Yes | — | Site marked active |
slug | string | No | — | Site slug propagated from input |
s3_bucket_name | string | No | — | Azure storage account name (stored in the cross-provider s3_bucket_name field) |
cloudfront_domain | string | No | — | Front Door endpoint hostname (used as the cross-provider edge identifier) |
resources_created | list | No | — | Subset of azure_blob_storage / azure_front_door / azure_front_door_custom_domain / azure_dns_cname / azure_rbac_assignment that were provisioned |
finalized_at | string | No | — | ISO8601 timestamp when the site was marked active |
organization_uuid | string | No | — | Organization ID |
cloud_connection_uuid | string | No | — | Azure cloud connection ID |
azure_custom_domain | string | No | — | Custom domain to attach to Front Door (e.g. cdn.example.com) |
dns_zone_ref | string | No | — | Azure DNS zone name (e.g. example.com) |
error | string | No | — | Engine-stamped failure metadata |
error_type | string | No | — | Engine-stamped failure metadata |
failed_at_state | json | No | — | Engine-stamped failure metadata |
failed_layer | json | No | — | Engine-stamped failure metadata |
failed_step | json | No | — | Engine-stamped failure metadata |
failure_reason | string | No | — | Engine-stamped failure metadata |
create_blob_storage | json | No | — | DAG step terminal state data |
configure_blob_storage | json | No | — | DAG step terminal state data |
create_front_door | json | No | — | DAG step terminal state data |
create_custom_domain | json | No | — | DAG step terminal state data |
restrict_blob_to_front_door | json | No | — | DAG step terminal state data |
create_dns_cname | json | No | — | DAG step terminal state data |
finalize | json | No | — | DAG step terminal state data |
DAG Layers ​
| # | Layer | Steps | Compensation |
|---|---|---|---|
| 1 | create_blob_storage | spad.ltip.azure.create_blob_storage | spad.compensation.noop |
| 2 | configure_blob_storage | spad.ltip.azure.configure_blob_storage | spad.compensation.noop |
| 3 | create_front_door | spad.ltip.azure.create_front_door | spad.compensation.noop |
| 4 | create_custom_domain | spad.ltip.azure.create_front_door_custom_domain | spad.compensation.noop |
| 5 | restrict_and_dns | spad.ltip.azure.restrict_blob_to_front_door, spad.ltip.azure.create_dns_cname | spad.compensation.noop |
| 6 | finalize | spad.ltip.site-creation-finalize | — |
Execution Flow ​
Compensation ​
When any layer fails, its compensation steps run in reverse order to roll back the work completed so far.
Sub-workflows ​
| Sub-workflow | Step name |
|---|---|
spad.ltip.azure.create_blob_storage | create_blob_storage |
spad.ltip.azure.configure_blob_storage | configure_blob_storage |
spad.ltip.azure.create_front_door | create_front_door |
spad.ltip.azure.create_front_door_custom_domain | create_custom_domain |
spad.ltip.azure.restrict_blob_to_front_door | restrict_blob_to_front_door |
spad.ltip.azure.create_dns_cname | create_dns_cname |
spad.ltip.site-creation-finalize | finalize |
spad.compensation.noop | ack_no_compensation_create_blob_storage |
API Usage ​
bash
POST /api/workflows/start
Content-Type: application/json
{
"workflow_type": "spad.site-creation-azure",
"initial_data": {
"site_uuid": "value",
"slug": "value",
"cloud_connection_uuid": "value"
}
}