From f0854ba27c7c03f1f42cec7e00457fa2128b5c9a Mon Sep 17 00:00:00 2001 From: pratikwayase Date: Tue, 30 Jun 2026 16:14:23 +0530 Subject: [PATCH 1/3] chore: upgrade microsoft/fabric provider to 1.10.0 --- blueprints/fabric-rti/terraform/versions.tf | 2 +- blueprints/fabric/terraform/versions.tf | 2 +- blueprints/full-multi-node-cluster/terraform/versions.tf | 2 +- src/000-cloud/031-fabric/ci/terraform/versions.tf | 2 +- .../031-fabric/terraform/modules/eventhouse/versions.tf | 2 +- .../031-fabric/terraform/modules/lakehouse/versions.tf | 2 +- .../031-fabric/terraform/modules/workspace/main.tf | 7 ++++--- .../031-fabric/terraform/modules/workspace/versions.tf | 2 +- src/000-cloud/031-fabric/terraform/versions.tf | 2 +- src/000-cloud/032-fabric-rti/ci/terraform/versions.tf | 2 +- src/000-cloud/032-fabric-rti/terraform/versions.tf | 2 +- .../130-messaging/terraform/modules/fabric-rti/versions.tf | 2 +- 12 files changed, 15 insertions(+), 14 deletions(-) diff --git a/blueprints/fabric-rti/terraform/versions.tf b/blueprints/fabric-rti/terraform/versions.tf index 099a76361..ab455c98d 100644 --- a/blueprints/fabric-rti/terraform/versions.tf +++ b/blueprints/fabric-rti/terraform/versions.tf @@ -10,7 +10,7 @@ terraform { } fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } required_version = ">= 1.12.0, < 2.0" diff --git a/blueprints/fabric/terraform/versions.tf b/blueprints/fabric/terraform/versions.tf index 6d0575c49..886b93f96 100644 --- a/blueprints/fabric/terraform/versions.tf +++ b/blueprints/fabric/terraform/versions.tf @@ -6,7 +6,7 @@ terraform { } fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } msgraph = { source = "microsoft/msgraph" diff --git a/blueprints/full-multi-node-cluster/terraform/versions.tf b/blueprints/full-multi-node-cluster/terraform/versions.tf index d4b1ac29f..31e84ad32 100644 --- a/blueprints/full-multi-node-cluster/terraform/versions.tf +++ b/blueprints/full-multi-node-cluster/terraform/versions.tf @@ -14,7 +14,7 @@ terraform { } fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } required_version = ">= 1.12.0, < 2.0" diff --git a/src/000-cloud/031-fabric/ci/terraform/versions.tf b/src/000-cloud/031-fabric/ci/terraform/versions.tf index f9f8683d0..5f2167510 100644 --- a/src/000-cloud/031-fabric/ci/terraform/versions.tf +++ b/src/000-cloud/031-fabric/ci/terraform/versions.tf @@ -10,7 +10,7 @@ terraform { } fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } required_version = ">= 1.12.0, < 2.0" diff --git a/src/000-cloud/031-fabric/terraform/modules/eventhouse/versions.tf b/src/000-cloud/031-fabric/terraform/modules/eventhouse/versions.tf index a5d72183c..060dfd46c 100644 --- a/src/000-cloud/031-fabric/terraform/modules/eventhouse/versions.tf +++ b/src/000-cloud/031-fabric/terraform/modules/eventhouse/versions.tf @@ -3,7 +3,7 @@ terraform { required_providers { fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } } diff --git a/src/000-cloud/031-fabric/terraform/modules/lakehouse/versions.tf b/src/000-cloud/031-fabric/terraform/modules/lakehouse/versions.tf index da521f900..25a4f6e8d 100644 --- a/src/000-cloud/031-fabric/terraform/modules/lakehouse/versions.tf +++ b/src/000-cloud/031-fabric/terraform/modules/lakehouse/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } required_version = ">= 1.12.0, < 2.0" diff --git a/src/000-cloud/031-fabric/terraform/modules/workspace/main.tf b/src/000-cloud/031-fabric/terraform/modules/workspace/main.tf index 714cb6baf..0f51f8512 100644 --- a/src/000-cloud/031-fabric/terraform/modules/workspace/main.tf +++ b/src/000-cloud/031-fabric/terraform/modules/workspace/main.tf @@ -2,7 +2,8 @@ # Documentation: https://aka.ms/fabric/terraform resource "fabric_workspace" "this" { - display_name = var.workspace_display_name - description = var.workspace_description - capacity_id = var.capacity_id + display_name = var.workspace_display_name + description = var.workspace_description + capacity_id = var.capacity_id + skip_capacity_state_validation = true } diff --git a/src/000-cloud/031-fabric/terraform/modules/workspace/versions.tf b/src/000-cloud/031-fabric/terraform/modules/workspace/versions.tf index da521f900..25a4f6e8d 100644 --- a/src/000-cloud/031-fabric/terraform/modules/workspace/versions.tf +++ b/src/000-cloud/031-fabric/terraform/modules/workspace/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } required_version = ">= 1.12.0, < 2.0" diff --git a/src/000-cloud/031-fabric/terraform/versions.tf b/src/000-cloud/031-fabric/terraform/versions.tf index c8e3fef6e..26c3fa604 100644 --- a/src/000-cloud/031-fabric/terraform/versions.tf +++ b/src/000-cloud/031-fabric/terraform/versions.tf @@ -6,7 +6,7 @@ terraform { } fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } required_version = ">= 1.12.0, < 2.0" diff --git a/src/000-cloud/032-fabric-rti/ci/terraform/versions.tf b/src/000-cloud/032-fabric-rti/ci/terraform/versions.tf index 335a55fff..7ca694bce 100644 --- a/src/000-cloud/032-fabric-rti/ci/terraform/versions.tf +++ b/src/000-cloud/032-fabric-rti/ci/terraform/versions.tf @@ -6,7 +6,7 @@ terraform { } fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } required_version = ">= 1.12.0, < 2.0" diff --git a/src/000-cloud/032-fabric-rti/terraform/versions.tf b/src/000-cloud/032-fabric-rti/terraform/versions.tf index c8e3fef6e..26c3fa604 100644 --- a/src/000-cloud/032-fabric-rti/terraform/versions.tf +++ b/src/000-cloud/032-fabric-rti/terraform/versions.tf @@ -6,7 +6,7 @@ terraform { } fabric = { source = "microsoft/fabric" - version = "1.3.0" + version = "1.10.0" } } required_version = ">= 1.12.0, < 2.0" diff --git a/src/100-edge/130-messaging/terraform/modules/fabric-rti/versions.tf b/src/100-edge/130-messaging/terraform/modules/fabric-rti/versions.tf index 8c27ea68c..5dc415d38 100644 --- a/src/100-edge/130-messaging/terraform/modules/fabric-rti/versions.tf +++ b/src/100-edge/130-messaging/terraform/modules/fabric-rti/versions.tf @@ -7,7 +7,7 @@ terraform { } fabric = { source = "microsoft/fabric" - version = ">= 1.3.0" + version = "1.10.0" } } } From 18942081aff05c5cee81b3e355eb72efafd16d92 Mon Sep 17 00:00:00 2001 From: pratikwayase Date: Tue, 30 Jun 2026 16:14:23 +0530 Subject: [PATCH 2/3] chore: upgrade microsoft/fabric provider to 1.10.0 --- src/000-cloud/031-fabric/ci/terraform/main.tf | 4 ++++ src/000-cloud/031-fabric/ci/terraform/variables.tf | 6 ++++++ src/000-cloud/031-fabric/terraform/main.tf | 7 ++++--- .../031-fabric/terraform/modules/workspace/main.tf | 2 +- .../031-fabric/terraform/modules/workspace/variables.tf | 5 +++++ src/000-cloud/031-fabric/terraform/variables.tf | 5 +++++ 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/000-cloud/031-fabric/ci/terraform/main.tf b/src/000-cloud/031-fabric/ci/terraform/main.tf index 8882acd62..fc658408e 100644 --- a/src/000-cloud/031-fabric/ci/terraform/main.tf +++ b/src/000-cloud/031-fabric/ci/terraform/main.tf @@ -28,4 +28,8 @@ module "ci" { should_create_fabric_workspace = var.should_create_fabric_workspace should_create_fabric_lakehouse = var.should_create_fabric_lakehouse should_create_fabric_eventhouse = var.should_create_fabric_eventhouse + + // CI defaults to skipping validation since capacity may be paused + skip_capacity_state_validation = var.skip_capacity_state_validation + } diff --git a/src/000-cloud/031-fabric/ci/terraform/variables.tf b/src/000-cloud/031-fabric/ci/terraform/variables.tf index a628f056e..ca777e212 100644 --- a/src/000-cloud/031-fabric/ci/terraform/variables.tf +++ b/src/000-cloud/031-fabric/ci/terraform/variables.tf @@ -63,3 +63,9 @@ variable "should_create_fabric_workspace" { type = bool default = false } + +variable "skip_capacity_state_validation" { + type = bool + description = "When true, skips validation of Fabric capacity state during workspace provisioning. Useful for non-production environments where capacity may be paused." + default = true +} diff --git a/src/000-cloud/031-fabric/terraform/main.tf b/src/000-cloud/031-fabric/terraform/main.tf index 117617483..dc7769481 100644 --- a/src/000-cloud/031-fabric/terraform/main.tf +++ b/src/000-cloud/031-fabric/terraform/main.tf @@ -70,9 +70,10 @@ module "fabric_workspace" { source = "./modules/workspace" - workspace_display_name = local.fabric_workspace_name - workspace_description = var.workspace_description - capacity_id = local.capacity_id + workspace_display_name = local.fabric_workspace_name + workspace_description = var.workspace_description + capacity_id = local.capacity_id + skip_capacity_state_validation = var.skip_capacity_state_validation } module "fabric_lakehouse" { diff --git a/src/000-cloud/031-fabric/terraform/modules/workspace/main.tf b/src/000-cloud/031-fabric/terraform/modules/workspace/main.tf index 0f51f8512..2ddfd4bc0 100644 --- a/src/000-cloud/031-fabric/terraform/modules/workspace/main.tf +++ b/src/000-cloud/031-fabric/terraform/modules/workspace/main.tf @@ -5,5 +5,5 @@ resource "fabric_workspace" "this" { display_name = var.workspace_display_name description = var.workspace_description capacity_id = var.capacity_id - skip_capacity_state_validation = true + skip_capacity_state_validation = var.skip_capacity_state_validation } diff --git a/src/000-cloud/031-fabric/terraform/modules/workspace/variables.tf b/src/000-cloud/031-fabric/terraform/modules/workspace/variables.tf index 0eca38fca..d811288e3 100644 --- a/src/000-cloud/031-fabric/terraform/modules/workspace/variables.tf +++ b/src/000-cloud/031-fabric/terraform/modules/workspace/variables.tf @@ -12,3 +12,8 @@ variable "capacity_id" { type = string description = "The capacity ID for the workspace" } + +variable "skip_capacity_state_validation" { + type = bool + description = "When true, skips validation of Fabric capacity state during workspace provisioning. Useful for non-production environments where capacity may be paused." +} diff --git a/src/000-cloud/031-fabric/terraform/variables.tf b/src/000-cloud/031-fabric/terraform/variables.tf index e5757c0f5..003074997 100644 --- a/src/000-cloud/031-fabric/terraform/variables.tf +++ b/src/000-cloud/031-fabric/terraform/variables.tf @@ -101,3 +101,8 @@ variable "workspace_description" { description = "The description of the Microsoft Fabric workspace" default = "Microsoft Fabric workspace for the Edge AI Accelerator solution" } + +variable "skip_capacity_state_validation" { + type = bool + description = "When true, skips validation of Fabric capacity state during workspace provisioning. Useful for non-production environments where capacity may be paused." +} From b61ed0493f8049393f9020d98ea482ef277b587f Mon Sep 17 00:00:00 2001 From: pratikwayase Date: Thu, 2 Jul 2026 20:26:30 +0530 Subject: [PATCH 3/3] docs: regenerate Terraform docs for Fabric provider 1.10.0 upgrade --- blueprints/fabric-rti/terraform/README.md | 106 +++++++++--------- blueprints/fabric/terraform/README.md | 76 ++++++------- .../031-fabric/ci/terraform/README.md | 55 ++++----- src/000-cloud/031-fabric/terraform/README.md | 97 ++++++++-------- .../terraform/modules/capacity/README.md | 34 +++--- .../terraform/modules/eventhouse/README.md | 46 ++++---- .../terraform/modules/lakehouse/README.md | 34 +++--- .../terraform/modules/workspace/README.md | 33 +++--- .../031-fabric/terraform/variables.tf | 1 + .../032-fabric-rti/ci/terraform/README.md | 46 ++++---- .../032-fabric-rti/terraform/README.md | 82 +++++++------- 11 files changed, 307 insertions(+), 303 deletions(-) diff --git a/blueprints/fabric-rti/terraform/README.md b/blueprints/fabric-rti/terraform/README.md index 601175c5a..21f15dc8b 100644 --- a/blueprints/fabric-rti/terraform/README.md +++ b/blueprints/fabric-rti/terraform/README.md @@ -7,74 +7,74 @@ already deployed resources. ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| azapi | >= 2.0.1 | -| azurerm | >= 4.51.0 | -| fabric | 1.3.0 | +| azapi | >= 2.0.1 | +| azurerm | >= 4.51.0 | +| fabric | 1.10.0 | ## Providers -| Name | Version | -|-----------|-----------| -| azapi | >= 2.0.1 | -| azurerm | >= 4.51.0 | -| fabric | 1.3.0 | -| terraform | n/a | +| Name | Version | +| ---- | ------- | +| azapi | >= 2.0.1 | +| azurerm | >= 4.51.0 | +| fabric | 1.10.0 | +| terraform | n/a | ## Resources -| Name | Type | -|-------------------------------------------------------------------------------------------------------------------------------------------------|-------------| -| [terraform_data.defer](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | -| [azapi_resource.aio_instance](https://registry.terraform.io/providers/azure/azapi/latest/docs/data-sources/resource) | data source | -| [azapi_resource.custom_location](https://registry.terraform.io/providers/azure/azapi/latest/docs/data-sources/resource) | data source | -| [azapi_resource.dataflow_profile](https://registry.terraform.io/providers/azure/azapi/latest/docs/data-sources/resource) | data source | -| [azurerm_resource_group.existing](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | +| Name | Type | +| ---- | ---- | +| [terraform_data.defer](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | +| [azapi_resource.aio_instance](https://registry.terraform.io/providers/azure/azapi/latest/docs/data-sources/resource) | data source | +| [azapi_resource.custom_location](https://registry.terraform.io/providers/azure/azapi/latest/docs/data-sources/resource) | data source | +| [azapi_resource.dataflow_profile](https://registry.terraform.io/providers/azure/azapi/latest/docs/data-sources/resource) | data source | +| [azurerm_resource_group.existing](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | | [azurerm_user_assigned_identity.aio](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/user_assigned_identity) | data source | -| [fabric_eventhouse.existing](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/data-sources/eventhouse) | data source | -| [fabric_workspace.existing](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/data-sources/workspace) | data source | +| [fabric_eventhouse.existing](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/data-sources/eventhouse) | data source | +| [fabric_workspace.existing](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/data-sources/workspace) | data source | ## Modules -| Name | Source | Version | -|-----------------|-------------------------------------------------|---------| -| cloud\_fabric | ../../../src/000-cloud/031-fabric/terraform | n/a | -| edge\_messaging | ../../../src/100-edge/130-messaging/terraform | n/a | -| fabric\_rti | ../../../src/000-cloud/032-fabric-rti/terraform | n/a | +| Name | Source | Version | +| ---- | ------ | ------- | +| cloud\_fabric | ../../../src/000-cloud/031-fabric/terraform | n/a | +| edge\_messaging | ../../../src/100-edge/130-messaging/terraform | n/a | +| fabric\_rti | ../../../src/000-cloud/032-fabric-rti/terraform | n/a | ## Inputs -| Name | Description | Type | Default | Required | -|--------------------------------------|---------------------------------------------------------------------------------------------------------------------------|----------|---------|:--------:| -| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | -| location | Azure region where all resources will be deployed | `string` | n/a | yes | -| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | -| aio\_identity\_name | Name of the existing AIO user-assigned managed identity. Otherwise, 'id-{resource\_prefix}-{environment}-aio-{instance}'. | `string` | `null` | no | -| aio\_instance\_name | Name of the existing AIO instance. Otherwise, 'arck-{resource\_prefix}-{environment}-{instance}-ops-instance'. | `string` | `null` | no | -| custom\_location\_name | Name of the existing custom location. Otherwise, 'arck-{resource\_prefix}-{environment}-{instance}-cl'. | `string` | `null` | no | -| eventhouse\_kql\_database\_name | Name of the Eventhouse KQL Database. (default, Eventhouse name) | `string` | `null` | no | -| eventstream\_table\_name | Name of the Eventhouse table for data ingestion. | `string` | `null` | no | -| fabric\_eventhouse\_name | The name of the Microsoft Fabric eventhouse. Otherwise, 'evh-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | -| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | -| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | -| resource\_group\_name | Name of the resource group | `string` | `null` | no | -| should\_create\_eventgrid\_dataflows | Whether to create EventGrid dataflows in the edge messaging component | `bool` | `false` | no | -| should\_create\_eventhub\_dataflows | Whether to create EventHub dataflows in the edge messaging component | `bool` | `false` | no | -| should\_create\_fabric\_eventhouse | Whether to create a Microsoft Fabric Eventhouse for real-time intelligence scenarios. | `bool` | `true` | no | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | +| location | Azure region where all resources will be deployed | `string` | n/a | yes | +| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | +| aio\_identity\_name | Name of the existing AIO user-assigned managed identity. Otherwise, 'id-{resource\_prefix}-{environment}-aio-{instance}'. | `string` | `null` | no | +| aio\_instance\_name | Name of the existing AIO instance. Otherwise, 'arck-{resource\_prefix}-{environment}-{instance}-ops-instance'. | `string` | `null` | no | +| custom\_location\_name | Name of the existing custom location. Otherwise, 'arck-{resource\_prefix}-{environment}-{instance}-cl'. | `string` | `null` | no | +| eventhouse\_kql\_database\_name | Name of the Eventhouse KQL Database. (default, Eventhouse name) | `string` | `null` | no | +| eventstream\_table\_name | Name of the Eventhouse table for data ingestion. | `string` | `null` | no | +| fabric\_eventhouse\_name | The name of the Microsoft Fabric eventhouse. Otherwise, 'evh-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | +| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | +| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | +| resource\_group\_name | Name of the resource group | `string` | `null` | no | +| should\_create\_eventgrid\_dataflows | Whether to create EventGrid dataflows in the edge messaging component | `bool` | `false` | no | +| should\_create\_eventhub\_dataflows | Whether to create EventHub dataflows in the edge messaging component | `bool` | `false` | no | +| should\_create\_fabric\_eventhouse | Whether to create a Microsoft Fabric Eventhouse for real-time intelligence scenarios. | `bool` | `true` | no | ## Outputs -| Name | Description | -|----------------------------------------------------|----------------------------------------------------------------------------| -| aio\_custom\_location | The existing custom location for Azure IoT Operations. | -| aio\_instance | The existing Azure IoT Operations instance. | -| eventstream\_dag\_configuration | The DAG configuration used for EventStream creation. | -| fabric\_eventhouse | The existing Microsoft Fabric Eventhouse for real-time analytics. | -| fabric\_eventstream | The Microsoft Fabric EventStream with custom endpoint for AIO integration. | -| fabric\_rti\_custom\_endpoint\_source\_connections | The Fabric RTI connection details. | -| fabric\_rti\_dataflow | The Fabric RTI dataflow endpoint for data ingestion. | -| fabric\_workspace | The existing Microsoft Fabric workspace for RTI analytics. | -| resource\_group | The existing resource group containing all resources. | +| Name | Description | +| ---- | ----------- | +| aio\_custom\_location | The existing custom location for Azure IoT Operations. | +| aio\_instance | The existing Azure IoT Operations instance. | +| eventstream\_dag\_configuration | The DAG configuration used for EventStream creation. | +| fabric\_eventhouse | The existing Microsoft Fabric Eventhouse for real-time analytics. | +| fabric\_eventstream | The Microsoft Fabric EventStream with custom endpoint for AIO integration. | +| fabric\_rti\_custom\_endpoint\_source\_connections | The Fabric RTI connection details. | +| fabric\_rti\_dataflow | The Fabric RTI dataflow endpoint for data ingestion. | +| fabric\_workspace | The existing Microsoft Fabric workspace for RTI analytics. | +| resource\_group | The existing resource group containing all resources. | diff --git a/blueprints/fabric/terraform/README.md b/blueprints/fabric/terraform/README.md index b77943333..0b03fdc06 100644 --- a/blueprints/fabric/terraform/README.md +++ b/blueprints/fabric/terraform/README.md @@ -5,58 +5,58 @@ Deploys Microsoft Fabric capacity, workspace, lakehouse, and eventhouse resource ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| azurerm | >= 4.51.0 | -| fabric | 1.3.0 | -| msgraph | >= 0.2.0 | +| azurerm | >= 4.51.0 | +| fabric | 1.10.0 | +| msgraph | >= 0.2.0 | ## Providers -| Name | Version | -|-----------|-----------| -| azurerm | >= 4.51.0 | -| msgraph | >= 0.2.0 | -| terraform | n/a | +| Name | Version | +| ---- | ------- | +| azurerm | >= 4.51.0 | +| msgraph | >= 0.2.0 | +| terraform | n/a | ## Resources -| Name | Type | -|-----------------------------------------------------------------------------------------------------------------------------------------|-------------| -| [msgraph_resource_action.current_user](https://registry.terraform.io/providers/microsoft/msgraph/latest/docs/resources/resource_action) | resource | -| [terraform_data.defer](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | -| [azurerm_resource_group.existing](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | +| Name | Type | +| ---- | ---- | +| [msgraph_resource_action.current_user](https://registry.terraform.io/providers/microsoft/msgraph/latest/docs/resources/resource_action) | resource | +| [terraform_data.defer](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | +| [azurerm_resource_group.existing](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | ## Modules -| Name | Source | Version | -|---------------|---------------------------------------------|---------| -| cloud\_fabric | ../../../src/000-cloud/031-fabric/terraform | n/a | +| Name | Source | Version | +| ---- | ------ | ------- | +| cloud\_fabric | ../../../src/000-cloud/031-fabric/terraform | n/a | ## Inputs -| Name | Description | Type | Default | Required | -|------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|---------|:--------:| -| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | -| location | Azure region where all resources will be deployed | `string` | n/a | yes | -| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | -| fabric\_capacity\_admins\_list | List of user principal names (UPNs) or Azure AD object IDs for Fabric capacity administrators. For users, provide UPN () or Object ID. For service principals, provide Application ID or Object ID. If left empty, current user will be added as admin. | `list(string)` | `[]` | no | -| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | -| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | -| resource\_group\_name | Name of the resource group | `string` | `null` | no | -| should\_create\_fabric\_capacity | Whether to create a new Fabric capacity or use an existing one. | `bool` | `false` | no | -| should\_create\_fabric\_eventhouse | Whether to create a Microsoft Fabric Eventhouse for real-time intelligence scenarios. | `bool` | `false` | no | -| should\_create\_fabric\_lakehouse | Whether to create a Microsoft Fabric lakehouse. | `bool` | `false` | no | -| should\_create\_fabric\_workspace | Whether to create a new Microsoft Fabric workspace or use an existing one. | `bool` | `false` | no | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | +| location | Azure region where all resources will be deployed | `string` | n/a | yes | +| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | +| fabric\_capacity\_admins\_list | List of user principal names (UPNs) or Azure AD object IDs for Fabric capacity administrators. For users, provide UPN () or Object ID. For service principals, provide Application ID or Object ID. If left empty, current user will be added as admin. | `list(string)` | `[]` | no | +| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | +| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | +| resource\_group\_name | Name of the resource group | `string` | `null` | no | +| should\_create\_fabric\_capacity | Whether to create a new Fabric capacity or use an existing one. | `bool` | `false` | no | +| should\_create\_fabric\_eventhouse | Whether to create a Microsoft Fabric Eventhouse for real-time intelligence scenarios. | `bool` | `false` | no | +| should\_create\_fabric\_lakehouse | Whether to create a Microsoft Fabric lakehouse. | `bool` | `false` | no | +| should\_create\_fabric\_workspace | Whether to create a new Microsoft Fabric workspace or use an existing one. | `bool` | `false` | no | ## Outputs -| Name | Description | -|--------------------|----------------------------------------------| -| fabric\_capacity | The Microsoft Fabric capacity details. | -| fabric\_eventhouse | The Microsoft Fabric eventhouse details. | -| fabric\_lakehouse | The Microsoft Fabric lakehouse details. | -| fabric\_workspace | The Microsoft Fabric workspace details. | -| resource\_group | The resource group for the fabric resources. | +| Name | Description | +| ---- | ----------- | +| fabric\_capacity | The Microsoft Fabric capacity details. | +| fabric\_eventhouse | The Microsoft Fabric eventhouse details. | +| fabric\_lakehouse | The Microsoft Fabric lakehouse details. | +| fabric\_workspace | The Microsoft Fabric workspace details. | +| resource\_group | The resource group for the fabric resources. | diff --git a/src/000-cloud/031-fabric/ci/terraform/README.md b/src/000-cloud/031-fabric/ci/terraform/README.md index 5f89a3565..ca5842aec 100644 --- a/src/000-cloud/031-fabric/ci/terraform/README.md +++ b/src/000-cloud/031-fabric/ci/terraform/README.md @@ -3,45 +3,46 @@ ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| azapi | >= 2.3.0 | -| azurerm | >= 4.51.0 | -| fabric | 1.3.0 | +| azapi | >= 2.3.0 | +| azurerm | >= 4.51.0 | +| fabric | 1.10.0 | ## Providers -| Name | Version | -|-----------|-----------| -| azurerm | >= 4.51.0 | -| terraform | n/a | +| Name | Version | +| ---- | ------- | +| azurerm | >= 4.51.0 | +| terraform | n/a | ## Resources -| Name | Type | -|---------------------------------------------------------------------------------------------------------------------------------|-------------| -| [terraform_data.defer](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | +| Name | Type | +| ---- | ---- | +| [terraform_data.defer](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | | [azurerm_resource_group.aio](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | ## Modules -| Name | Source | Version | -|------|-----------------|---------| -| ci | ../../terraform | n/a | +| Name | Source | Version | +| ---- | ------ | ------- | +| ci | ../../terraform | n/a | ## Inputs -| Name | Description | Type | Default | Required | -|------------------------------------|--------------------------------------------------------------------------------------------------------------------|----------------|---------|:--------:| -| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | -| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | -| fabric\_capacity\_admins | List of AAD object IDs for Fabric capacity administrators. Required when creating a capacity. | `list(string)` | `[]` | no | -| fabric\_capacity\_name | The name of the Microsoft Fabric capacity. Otherwise, 'cap{resource\_prefix\_no\_hyphens}{environment}{instance}'. | `string` | `null` | no | -| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | -| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | -| should\_create\_fabric\_capacity | Whether to create a new Fabric capacity or use an existing one. | `bool` | `false` | no | -| should\_create\_fabric\_eventhouse | Whether to create a Microsoft Fabric Eventhouse for real-time intelligence scenarios. | `bool` | `false` | no | -| should\_create\_fabric\_lakehouse | Whether to create a Microsoft Fabric lakehouse. | `bool` | `false` | no | -| should\_create\_fabric\_workspace | Whether to create a new Microsoft Fabric workspace or use an existing one. | `bool` | `false` | no | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | +| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | +| fabric\_capacity\_admins | List of AAD object IDs for Fabric capacity administrators. Required when creating a capacity. | `list(string)` | `[]` | no | +| fabric\_capacity\_name | The name of the Microsoft Fabric capacity. Otherwise, 'cap{resource\_prefix\_no\_hyphens}{environment}{instance}'. | `string` | `null` | no | +| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | +| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | +| should\_create\_fabric\_capacity | Whether to create a new Fabric capacity or use an existing one. | `bool` | `false` | no | +| should\_create\_fabric\_eventhouse | Whether to create a Microsoft Fabric Eventhouse for real-time intelligence scenarios. | `bool` | `false` | no | +| should\_create\_fabric\_lakehouse | Whether to create a Microsoft Fabric lakehouse. | `bool` | `false` | no | +| should\_create\_fabric\_workspace | Whether to create a new Microsoft Fabric workspace or use an existing one. | `bool` | `false` | no | +| skip\_capacity\_state\_validation | When true, skips validation of Fabric capacity state during workspace provisioning. Useful for non-production environments where capacity may be paused. | `bool` | `true` | no | diff --git a/src/000-cloud/031-fabric/terraform/README.md b/src/000-cloud/031-fabric/terraform/README.md index 79cfe5f3d..6ac89071f 100644 --- a/src/000-cloud/031-fabric/terraform/README.md +++ b/src/000-cloud/031-fabric/terraform/README.md @@ -5,69 +5,70 @@ Contains all the resources needed for Fabric based resources. ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| azurerm | >= 4.51.0 | -| fabric | 1.3.0 | +| azurerm | >= 4.51.0 | +| fabric | 1.10.0 | ## Providers -| Name | Version | -|-----------|---------| -| fabric | 1.3.0 | -| terraform | n/a | +| Name | Version | +| ---- | ------- | +| fabric | 1.10.0 | +| terraform | n/a | ## Resources -| Name | Type | -|-----------------------------------------------------------------------------------------------------------------------------------------|-------------| -| [terraform_data.defer_fabric_capacity_created](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | -| [terraform_data.defer_fabric_capacity_existing](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | -| [terraform_data.defer_fabric_workspace](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | -| [fabric_capacity.created](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/data-sources/capacity) | data source | -| [fabric_capacity.existing](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/data-sources/capacity) | data source | -| [fabric_workspace.existing](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/data-sources/workspace) | data source | +| Name | Type | +| ---- | ---- | +| [terraform_data.defer_fabric_capacity_created](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | +| [terraform_data.defer_fabric_capacity_existing](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | +| [terraform_data.defer_fabric_workspace](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | +| [fabric_capacity.created](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/data-sources/capacity) | data source | +| [fabric_capacity.existing](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/data-sources/capacity) | data source | +| [fabric_workspace.existing](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/data-sources/workspace) | data source | ## Modules -| Name | Source | Version | -|--------------------|----------------------|---------| -| fabric\_capacity | ./modules/capacity | n/a | -| fabric\_eventhouse | ./modules/eventhouse | n/a | -| fabric\_lakehouse | ./modules/lakehouse | n/a | -| fabric\_workspace | ./modules/workspace | n/a | +| Name | Source | Version | +| ---- | ------ | ------- | +| fabric\_capacity | ./modules/capacity | n/a | +| fabric\_eventhouse | ./modules/eventhouse | n/a | +| fabric\_lakehouse | ./modules/lakehouse | n/a | +| fabric\_workspace | ./modules/workspace | n/a | ## Inputs -| Name | Description | Type | Default | Required | -|------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|---------------------------------------------------------------------|:--------:| -| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | -| location | Azure region where all resources will be deployed | `string` | n/a | yes | -| resource\_group | Resource group object containing name and id where resources will be deployed | ```object({ name = string })``` | n/a | yes | -| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | -| additional\_kql\_databases | Additional KQL databases to create within the eventhouse. | ```map(object({ display_name = string description = string }))``` | `{}` | no | -| eventhouse\_description | The description of the Microsoft Fabric eventhouse | `string` | `"Eventhouse for real-time analytics of Edge device data"` | no | -| fabric\_capacity\_admins | List of user principal names (UPNs) or Azure AD object IDs for Fabric capacity administrators. For users, provide UPN () or Object ID. For service principals, provide Application ID or Object ID. At least one administrator is required when creating a capacity. | `list(string)` | `[]` | no | -| fabric\_capacity\_name | The name of the Microsoft Fabric capacity. Otherwise, 'cap{resource\_prefix\_no\_hyphens}{environment}{instance}'. | `string` | `null` | no | -| fabric\_capacity\_sku | The SKU name for the Fabric capacity. | `string` | `"F2"` | no | -| fabric\_eventhouse\_name | The name of the Microsoft Fabric eventhouse. Otherwise, 'evh-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | -| fabric\_lakehouse\_name | The name of the Microsoft Fabric lakehouse. Otherwise, 'lh\_{resource\_prefix}\_{environment}\_{instance}'. | `string` | `null` | no | -| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | -| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | -| lakehouse\_description | The description of the Microsoft Fabric lakehouse | `string` | `"Lakehouse for storing and analyzing data from Edge devices"` | no | -| should\_create\_fabric\_capacity | Whether to create a new Fabric capacity or use an existing one. | `bool` | `false` | no | -| should\_create\_fabric\_eventhouse | Whether to create a Microsoft Fabric Eventhouse for real-time intelligence scenarios. | `bool` | `false` | no | -| should\_create\_fabric\_lakehouse | Whether to create a Microsoft Fabric lakehouse. | `bool` | `false` | no | -| should\_create\_fabric\_workspace | Whether to create a new Microsoft Fabric workspace or use an existing one. | `bool` | `false` | no | -| workspace\_description | The description of the Microsoft Fabric workspace | `string` | `"Microsoft Fabric workspace for the Edge AI Accelerator solution"` | no | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | +| location | Azure region where all resources will be deployed | `string` | n/a | yes | +| resource\_group | Resource group object containing name and id where resources will be deployed | ```object({ name = string })``` | n/a | yes | +| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | +| additional\_kql\_databases | Additional KQL databases to create within the eventhouse. | ```map(object({ display_name = string description = string }))``` | `{}` | no | +| eventhouse\_description | The description of the Microsoft Fabric eventhouse | `string` | `"Eventhouse for real-time analytics of Edge device data"` | no | +| fabric\_capacity\_admins | List of user principal names (UPNs) or Azure AD object IDs for Fabric capacity administrators. For users, provide UPN () or Object ID. For service principals, provide Application ID or Object ID. At least one administrator is required when creating a capacity. | `list(string)` | `[]` | no | +| fabric\_capacity\_name | The name of the Microsoft Fabric capacity. Otherwise, 'cap{resource\_prefix\_no\_hyphens}{environment}{instance}'. | `string` | `null` | no | +| fabric\_capacity\_sku | The SKU name for the Fabric capacity. | `string` | `"F2"` | no | +| fabric\_eventhouse\_name | The name of the Microsoft Fabric eventhouse. Otherwise, 'evh-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | +| fabric\_lakehouse\_name | The name of the Microsoft Fabric lakehouse. Otherwise, 'lh\_{resource\_prefix}\_{environment}\_{instance}'. | `string` | `null` | no | +| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | +| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | +| lakehouse\_description | The description of the Microsoft Fabric lakehouse | `string` | `"Lakehouse for storing and analyzing data from Edge devices"` | no | +| should\_create\_fabric\_capacity | Whether to create a new Fabric capacity or use an existing one. | `bool` | `false` | no | +| should\_create\_fabric\_eventhouse | Whether to create a Microsoft Fabric Eventhouse for real-time intelligence scenarios. | `bool` | `false` | no | +| should\_create\_fabric\_lakehouse | Whether to create a Microsoft Fabric lakehouse. | `bool` | `false` | no | +| should\_create\_fabric\_workspace | Whether to create a new Microsoft Fabric workspace or use an existing one. | `bool` | `false` | no | +| skip\_capacity\_state\_validation | When true, skips validation of Fabric capacity state during workspace provisioning. Useful for non-production environments where capacity may be paused. | `bool` | `true` | no | +| workspace\_description | The description of the Microsoft Fabric workspace | `string` | `"Microsoft Fabric workspace for the Edge AI Accelerator solution"` | no | ## Outputs -| Name | Description | -|--------------------|-------------------------------------------------------| -| fabric\_capacity | Fabric capacity details. | +| Name | Description | +| ---- | ----------- | +| fabric\_capacity | Fabric capacity details. | | fabric\_eventhouse | Fabric eventhouse details for real-time intelligence. | -| fabric\_lakehouse | Fabric lakehouse details. | -| fabric\_workspace | Fabric workspace details. | +| fabric\_lakehouse | Fabric lakehouse details. | +| fabric\_workspace | Fabric workspace details. | diff --git a/src/000-cloud/031-fabric/terraform/modules/capacity/README.md b/src/000-cloud/031-fabric/terraform/modules/capacity/README.md index 17f1186ed..b87c59b6e 100644 --- a/src/000-cloud/031-fabric/terraform/modules/capacity/README.md +++ b/src/000-cloud/031-fabric/terraform/modules/capacity/README.md @@ -3,37 +3,37 @@ ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| azurerm | >= 4.51.0 | +| azurerm | >= 4.51.0 | ## Providers -| Name | Version | -|---------|-----------| +| Name | Version | +| ---- | ------- | | azurerm | >= 4.51.0 | ## Resources -| Name | Type | -|---------------------------------------------------------------------------------------------------------------------------------|----------| +| Name | Type | +| ---- | ---- | | [azurerm_fabric_capacity.this](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/fabric_capacity) | resource | ## Inputs -| Name | Description | Type | Default | Required | -|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|---------|:--------:| -| admin\_members | List of user principal names (UPNs) or Azure AD object IDs for Fabric capacity administrators. For users, provide UPN () or Object ID. For service principals, provide Application ID or Object ID. At least one administrator is required. | `list(string)` | n/a | yes | -| location | Azure region where all resources will be deployed | `string` | n/a | yes | -| name | The name of the Fabric capacity. | `string` | n/a | yes | -| resource\_group\_name | Name of the resource group | `string` | n/a | yes | -| sku | SKU name for the resource | `string` | `"F2"` | no | -| tags | Tags to apply to all resources | `map(string)` | `{}` | no | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| admin\_members | List of user principal names (UPNs) or Azure AD object IDs for Fabric capacity administrators. For users, provide UPN () or Object ID. For service principals, provide Application ID or Object ID. At least one administrator is required. | `list(string)` | n/a | yes | +| location | Azure region where all resources will be deployed | `string` | n/a | yes | +| name | The name of the Fabric capacity. | `string` | n/a | yes | +| resource\_group\_name | Name of the resource group | `string` | n/a | yes | +| sku | SKU name for the resource | `string` | `"F2"` | no | +| tags | Tags to apply to all resources | `map(string)` | `{}` | no | ## Outputs -| Name | Description | -|----------|----------------------| +| Name | Description | +| ---- | ----------- | | capacity | The Fabric capacity. | diff --git a/src/000-cloud/031-fabric/terraform/modules/eventhouse/README.md b/src/000-cloud/031-fabric/terraform/modules/eventhouse/README.md index 3fa5d65e8..7d85f1b45 100644 --- a/src/000-cloud/031-fabric/terraform/modules/eventhouse/README.md +++ b/src/000-cloud/031-fabric/terraform/modules/eventhouse/README.md @@ -7,40 +7,40 @@ time-series and telemetry data from IoT devices and streaming sources. ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| fabric | 1.3.0 | +| fabric | 1.10.0 | ## Providers -| Name | Version | -|--------|---------| -| fabric | 1.3.0 | +| Name | Version | +| ---- | ------- | +| fabric | 1.10.0 | ## Resources -| Name | Type | -|------------------------------------------------------------------------------------------------------------------------------|----------| -| [fabric_eventhouse.this](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/resources/eventhouse) | resource | -| [fabric_kql_database.additional](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/resources/kql_database) | resource | +| Name | Type | +| ---- | ---- | +| [fabric_eventhouse.this](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/resources/eventhouse) | resource | +| [fabric_kql_database.additional](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/resources/kql_database) | resource | ## Inputs -| Name | Description | Type | Default | Required | -|----------------------------|-------------------------------------------------------------|-------------------------------------------------------------------|---------|:--------:| -| eventhouse\_description | The description of the Microsoft Fabric eventhouse | `string` | n/a | yes | -| eventhouse\_display\_name | The display name of the eventhouse. | `string` | n/a | yes | -| workspace\_id | The ID of the workspace where the lakehouse will be created | `string` | n/a | yes | -| additional\_kql\_databases | Additional KQL databases to create within the eventhouse. | ```map(object({ display_name = string description = string }))``` | `{}` | no | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| eventhouse\_description | The description of the Microsoft Fabric eventhouse | `string` | n/a | yes | +| eventhouse\_display\_name | The display name of the eventhouse. | `string` | n/a | yes | +| workspace\_id | The ID of the workspace where the lakehouse will be created | `string` | n/a | yes | +| additional\_kql\_databases | Additional KQL databases to create within the eventhouse. | ```map(object({ display_name = string description = string }))``` | `{}` | no | ## Outputs -| Name | Description | -|--------------------|------------------------------------------------------------| -| eventhouse | The complete eventhouse object with all properties. | -| eventhouse\_id | The ID of the created eventhouse. | -| eventhouse\_name | The display name of the created eventhouse. | -| kql\_database\_ids | List of all KQL database IDs within the eventhouse. | -| kql\_databases | List of all KQL database objects with complete properties. | +| Name | Description | +| ---- | ----------- | +| eventhouse | The complete eventhouse object with all properties. | +| eventhouse\_id | The ID of the created eventhouse. | +| eventhouse\_name | The display name of the created eventhouse. | +| kql\_database\_ids | List of all KQL database IDs within the eventhouse. | +| kql\_databases | List of all KQL database objects with complete properties. | diff --git a/src/000-cloud/031-fabric/terraform/modules/lakehouse/README.md b/src/000-cloud/031-fabric/terraform/modules/lakehouse/README.md index 910f76b57..8f0d166a8 100644 --- a/src/000-cloud/031-fabric/terraform/modules/lakehouse/README.md +++ b/src/000-cloud/031-fabric/terraform/modules/lakehouse/README.md @@ -3,35 +3,35 @@ ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| fabric | 1.3.0 | +| fabric | 1.10.0 | ## Providers -| Name | Version | -|--------|---------| -| fabric | 1.3.0 | +| Name | Version | +| ---- | ------- | +| fabric | 1.10.0 | ## Resources -| Name | Type | -|------------------------------------------------------------------------------------------------------------------|----------| -| [fabric_lakehouse.this](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/resources/lakehouse) | resource | +| Name | Type | +| ---- | ---- | +| [fabric_lakehouse.this](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/resources/lakehouse) | resource | ## Inputs -| Name | Description | Type | Default | Required | -|--------------------------|-------------------------------------------------------------|----------|---------|:--------:| -| lakehouse\_description | The description of the Microsoft Fabric lakehouse | `string` | n/a | yes | -| lakehouse\_display\_name | The display name of the lakehouse | `string` | n/a | yes | -| workspace\_id | The ID of the workspace where the lakehouse will be created | `string` | n/a | yes | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| lakehouse\_description | The description of the Microsoft Fabric lakehouse | `string` | n/a | yes | +| lakehouse\_display\_name | The display name of the lakehouse | `string` | n/a | yes | +| workspace\_id | The ID of the workspace where the lakehouse will be created | `string` | n/a | yes | ## Outputs -| Name | Description | -|-----------------|-----------------------------------| -| lakehouse\_id | The ID of the created lakehouse | +| Name | Description | +| ---- | ----------- | +| lakehouse\_id | The ID of the created lakehouse | | lakehouse\_name | The name of the created lakehouse | diff --git a/src/000-cloud/031-fabric/terraform/modules/workspace/README.md b/src/000-cloud/031-fabric/terraform/modules/workspace/README.md index 9b483582d..59947af03 100644 --- a/src/000-cloud/031-fabric/terraform/modules/workspace/README.md +++ b/src/000-cloud/031-fabric/terraform/modules/workspace/README.md @@ -3,34 +3,35 @@ ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| fabric | 1.3.0 | +| fabric | 1.10.0 | ## Providers -| Name | Version | -|--------|---------| -| fabric | 1.3.0 | +| Name | Version | +| ---- | ------- | +| fabric | 1.10.0 | ## Resources -| Name | Type | -|------------------------------------------------------------------------------------------------------------------|----------| -| [fabric_workspace.this](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/resources/workspace) | resource | +| Name | Type | +| ---- | ---- | +| [fabric_workspace.this](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/resources/workspace) | resource | ## Inputs -| Name | Description | Type | Default | Required | -|--------------------------|---------------------------------------------------|----------|---------|:--------:| -| capacity\_id | The capacity ID for the workspace | `string` | n/a | yes | -| workspace\_description | The description of the Microsoft Fabric workspace | `string` | n/a | yes | -| workspace\_display\_name | The display name of the workspace | `string` | n/a | yes | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| capacity\_id | The capacity ID for the workspace | `string` | n/a | yes | +| skip\_capacity\_state\_validation | When true, skips validation of Fabric capacity state during workspace provisioning. Useful for non-production environments where capacity may be paused. | `bool` | n/a | yes | +| workspace\_description | The description of the Microsoft Fabric workspace | `string` | n/a | yes | +| workspace\_display\_name | The display name of the workspace | `string` | n/a | yes | ## Outputs -| Name | Description | -|-----------|-----------------------| +| Name | Description | +| ---- | ----------- | | workspace | The Fabric workspace. | diff --git a/src/000-cloud/031-fabric/terraform/variables.tf b/src/000-cloud/031-fabric/terraform/variables.tf index 003074997..94344f4f9 100644 --- a/src/000-cloud/031-fabric/terraform/variables.tf +++ b/src/000-cloud/031-fabric/terraform/variables.tf @@ -105,4 +105,5 @@ variable "workspace_description" { variable "skip_capacity_state_validation" { type = bool description = "When true, skips validation of Fabric capacity state during workspace provisioning. Useful for non-production environments where capacity may be paused." + default = true } diff --git a/src/000-cloud/032-fabric-rti/ci/terraform/README.md b/src/000-cloud/032-fabric-rti/ci/terraform/README.md index 7b804ddb1..db92a086a 100644 --- a/src/000-cloud/032-fabric-rti/ci/terraform/README.md +++ b/src/000-cloud/032-fabric-rti/ci/terraform/README.md @@ -3,40 +3,40 @@ ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| azurerm | >= 4.51.0 | -| fabric | 1.3.0 | +| azurerm | >= 4.51.0 | +| fabric | 1.10.0 | ## Providers -| Name | Version | -|-----------|---------| -| fabric | 1.3.0 | -| terraform | n/a | +| Name | Version | +| ---- | ------- | +| fabric | 1.10.0 | +| terraform | n/a | ## Resources -| Name | Type | -|-----------------------------------------------------------------------------------------------------------------------------|-------------| -| [terraform_data.defer](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | -| [fabric_eventhouse.eventhouse](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/data-sources/eventhouse) | data source | -| [fabric_workspace.workspace](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/data-sources/workspace) | data source | +| Name | Type | +| ---- | ---- | +| [terraform_data.defer](https://registry.terraform.io/providers/hashicorp/terraform/latest/docs/resources/data) | resource | +| [fabric_eventhouse.eventhouse](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/data-sources/eventhouse) | data source | +| [fabric_workspace.workspace](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/data-sources/workspace) | data source | ## Modules -| Name | Source | Version | -|------|-----------------|---------| -| ci | ../../terraform | n/a | +| Name | Source | Version | +| ---- | ------ | ------- | +| ci | ../../terraform | n/a | ## Inputs -| Name | Description | Type | Default | Required | -|--------------------------|-----------------------------------------------------------------------------------------------------------|----------|---------|:--------:| -| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | -| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | -| fabric\_eventhouse\_name | The name of the Microsoft Fabric eventhouse. Otherwise, 'evh-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | -| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | -| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | +| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | +| fabric\_eventhouse\_name | The name of the Microsoft Fabric eventhouse. Otherwise, 'evh-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | +| fabric\_workspace\_name | The name of the Microsoft Fabric workspace. Otherwise, 'ws-{resource\_prefix}-{environment}-{instance}' | `string` | `null` | no | +| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | diff --git a/src/000-cloud/032-fabric-rti/terraform/README.md b/src/000-cloud/032-fabric-rti/terraform/README.md index 6645ae8d8..0227dd7a3 100644 --- a/src/000-cloud/032-fabric-rti/terraform/README.md +++ b/src/000-cloud/032-fabric-rti/terraform/README.md @@ -6,58 +6,58 @@ Eventhouse destinations, DerivedStreams, and all available operators for flexibl ## Requirements -| Name | Version | -|-----------|------------------| +| Name | Version | +| ---- | ------- | | terraform | >= 1.12.0, < 2.0 | -| azurerm | >= 4.51.0 | -| fabric | 1.3.0 | +| azurerm | >= 4.51.0 | +| fabric | 1.10.0 | ## Providers -| Name | Version | -|--------|---------| -| fabric | 1.3.0 | +| Name | Version | +| ---- | ------- | +| fabric | 1.10.0 | ## Resources -| Name | Type | -|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| -| [fabric_eventstream.rti_eventstream](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/resources/eventstream) | resource | -| [fabric_eventstream_source_connection.custom_endpoint_source](https://registry.terraform.io/providers/microsoft/fabric/1.3.0/docs/data-sources/eventstream_source_connection) | data source | +| Name | Type | +| ---- | ---- | +| [fabric_eventstream.rti_eventstream](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/resources/eventstream) | resource | +| [fabric_eventstream_source_connection.custom_endpoint_source](https://registry.terraform.io/providers/microsoft/fabric/1.10.0/docs/data-sources/eventstream_source_connection) | data source | ## Inputs -| Name | Description | Type | Default | Required | -|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|:--------:| -| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | -| fabric\_workspace | Fabric workspace for RTI resources. Required when fabric\_eventstream\_endpoint is provided. | ```object({ id = string display_name = string })``` | n/a | yes | -| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | -| destinations\_eventhouse | List of Eventhouse destinations with their configuration and input connections. Eventhouse destinations route processed data to KQL databases for real-time analytics and querying. When workspaceId, itemId, or databaseName are not provided, the component uses automatically configured references from the fabric\_workspace and fabric\_eventhouse dependencies. ## Properties - `name`: Unique name for the destination within the EventStream - `inputNodes`: List of source or operator node names that feed into this destination - `properties.dataIngestionMode`: Ingestion mode ("DirectIngestion", "ProcessedIngestion") - default: "ProcessedIngestion" - `properties.workspaceId`: Fabric workspace ID - `properties.itemId`: Eventhouse Database ID - `properties.databaseName`: KQL database name - `properties.tableName`: Target KQL table name (optional for direct ingestion, auto-created if not specified) - `properties.inputSerialization`: Data serialization configuration - `type`: Serialization format ("Json", "Avro", "Csv") - default: "Json" - `properties.encoding`: Character encoding ("UTF8", "UTF16", "UTF32") - default: "UTF8" | ```list(object({ name = string inputNodes = list(string) properties = object({ dataIngestionMode = optional(string, "ProcessedIngestion") workspaceId = string itemId = string databaseName = string tableName = optional(string, null) inputSerialization = optional(object({ type = optional(string, "Json") properties = optional(object({ encoding = optional(string, "UTF8") }), { encoding = "UTF8" }) }), { type = "Json" properties = { encoding = "UTF8" } }) }) }))``` | `[]` | no | -| destinations\_lakehouse | List of Lakehouse destinations with their configuration and input connections. Lakehouse destinations route processed data to Delta tables in Fabric Lakehouses for data lake analytics. When workspaceId or itemId are not provided, the component uses automatically configured references. ## Properties - `name`: Unique name for the destination within the EventStream - `inputNodes`: List of source or operator node names that feed into this destination - `properties.workspaceId`: Fabric workspace ID (optional, defaults to component workspace) - `properties.itemId`: Lakehouse item ID (optional, requires explicit configuration) - `properties.schema`: Schema name within the lakehouse (optional) - default: "dbo" - `properties.deltaTable`: Target Delta table name (required) - `properties.minimumRows`: Minimum number of rows to buffer before writing to Delta table - default: 100000 - `properties.maximumDurationInSeconds`: Maximum time in seconds to buffer before forcing write - default: 120 - `properties.inputSerialization`: Data serialization configuration - `type`: Serialization format ("Json", "Avro", "Csv") - default: "Json" - `properties.encoding`: Character encoding ("UTF8", "UTF16", "UTF32") - default: "UTF8" | ```list(object({ name = string inputNodes = list(string) properties = object({ workspaceId = string itemId = string schema = optional(string, "dbo") deltaTable = string minimumRows = optional(number, 100000) maximumDurationInSeconds = optional(number, 120) inputSerialization = optional(object({ type = optional(string, "Json") properties = optional(object({ encoding = optional(string, "UTF8") }), { encoding = "UTF8" }) }), { type = "Json" properties = { encoding = "UTF8" } }) }) }))``` | `[]` | no | -| eventstream\_template\_file\_path | Optional file path to custom eventstream.json template for advanced scenarios. When provided, this template file will be used instead of the auto-generated DAG configuration. The template should be a Go text/template format file that will be processed with the tokens provided in the template\_tokens variable. Use this for: - Complex EventStream configurations not supported by the DAG variables - Custom JSON structures requiring specific formatting - Advanced template-based configuration management If null (default), the component generates the EventStream definition from DAG variables. | `string` | `null` | no | -| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | -| operators\_aggregate | List of Aggregate operators with their aggregation configuration and input connections. Aggregate operators calculate rolling aggregations over time windows with optional partitioning. Unlike GroupBy, Aggregate operators emit results continuously as events arrive. ## Properties - `name`: Unique name for the Aggregate operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.aggregations`: Array of aggregation functions to apply - `aggregateFunction`: Function to apply ("Count", "Sum", "Average", "Min", "Max", "First", "Last") - `column.node`: Reference node name (optional, null for same stream) - `column.columnName`: Name of the field/column to aggregate ("*" for count operations) - `alias`: Output field name for the aggregation result - `partitionBy`: Array of fields to partition aggregations by (optional) - `node`: Reference node name (optional, null for same stream) - `columnName`: Name of the field/column to partition by - `duration`: Time window for the aggregation - `value`: Duration value (number) - `unit`: Time unit ("Second", "Minute", "Hour", "Day") | ```list(object({ name = string inputNodes = list(string) properties = object({ aggregations = list(object({ aggregateFunction = string column = object({ node = optional(string) columnName = string }) alias = string partitionBy = optional(list(object({ node = optional(string) columnName = string })), []) duration = object({ value = number unit = string }) })) }) }))``` | `[]` | no | -| operators\_expand | List of Expand operators with their expansion configuration and input connections. Expand operators flatten array fields by creating separate output events for each array element. This is useful for processing nested JSON structures with arrays. ## Properties - `name`: Unique name for the Expand operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.column`: Array field to expand - `node`: Reference node name (optional, null for same stream) - `columnName`: Name of the array field to expand - `properties.ignoreMissingOrEmpty`: Whether to ignore missing or empty arrays (default: false) - `true`: Skip events with missing/empty arrays - `false`: Pass through events with missing/empty arrays unchanged | ```list(object({ name = string inputNodes = list(string) properties = object({ column = object({ node = optional(string) columnName = string }) ignoreMissingOrEmpty = optional(bool, false) }) }))``` | `[]` | no | -| operators\_filter | List of Filter operators with their conditions and input connections. Filter operators evaluate conditions on streaming data and only pass events that meet all specified criteria. Multiple conditions are combined with logical AND operations. ## Properties - `name`: Unique name for the filter operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.conditions`: Array of filter conditions to evaluate - `column.node`: Reference node name (optional, null for same stream) - `column.columnName`: Name of the field/column to evaluate - `column.columnPath`: JSONPath for nested fields (optional) - `column.expressionType`: Expression type ("ColumnReference") - default: "ColumnReference" - `operatorType`: Comparison operator ("Equals", "NotEquals", "GreaterThan", "LessThan", "GreaterThanOrEqual", "LessThanOrEqual", "Contains", "StartsWith", "EndsWith") - `value.dataType`: Data type for comparison ("String", "Double", "Long", "Boolean", "DateTime") - default: "String" - `value.value`: The literal value to compare against (as string) - `value.expressionType`: Value expression type ("Literal") - default: "Literal" | ```list(object({ name = string inputNodes = list(string) properties = object({ conditions = list(object({ column = object({ node = optional(string) columnName = string columnPath = optional(string) expressionType = optional(string, "ColumnReference") }) operatorType = string value = object({ dataType = optional(string, "String") value = string expressionType = optional(string, "Literal") }) })) }) }))``` | `[]` | no | -| operators\_group\_by | List of GroupBy operators with their aggregation configuration and input connections. GroupBy operators group events by specified fields and apply aggregation functions within time windows. Results are emitted when the time window completes. ## Properties - `name`: Unique name for the GroupBy operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.aggregations`: Array of aggregation functions to apply - `aggregateFunction`: Function to apply ("Count", "Sum", "Average", "Min", "Max", "First", "Last") - `column.node`: Reference node name (optional, null for same stream) - `column.columnName`: Name of the field/column to aggregate ("*" for count operations) - `alias`: Output field name for the aggregation result - `properties.groupBy`: Array of fields to group by - `node`: Reference node name (optional, null for same stream) - `columnName`: Name of the field/column to group by - `properties.window`: Time window configuration - `type`: Window type ("Tumbling", "Hopping", "Session") - `properties.duration`: Window duration - `value`: Duration value (number) - `unit`: Time unit ("Second", "Minute", "Hour", "Day") - `properties.offset`: Window offset (optional, for Hopping windows) - `value`: Offset value (number) - `unit`: Time unit ("Second", "Minute", "Hour", "Day") | ```list(object({ name = string inputNodes = list(string) properties = object({ aggregations = list(object({ aggregateFunction = string column = object({ node = optional(string) columnName = string }) alias = string })) groupBy = list(object({ node = optional(string) columnName = string })) window = object({ type = string properties = object({ duration = object({ value = number unit = string }) offset = optional(object({ value = number unit = string })) }) }) }) }))``` | `[]` | no | -| operators\_join | List of Join operators with their join configuration and input connections. Join operators combine data from two input streams based on matching key fields within a time window. The operator maintains a buffer of events from both streams for the specified duration. ## Properties - `name`: Unique name for the Join operator within the EventStream - `inputNodes`: List of exactly two source or stream node names (left and right streams) - `properties.joinType`: Type of join operation ("Inner", "LeftOuter") - `properties.joinOn`: Array of join conditions specifying field mappings - `left.node`: Name of the left stream node - `left.columnName`: Field name in the left stream to join on - `right.node`: Name of the right stream node - `right.columnName`: Field name in the right stream to join on - `properties.duration`: Time window for maintaining join state - `value`: Duration value (number) - `unit`: Time unit ("Second", "Minute", "Hour", "Day") | ```list(object({ name = string inputNodes = list(string) properties = object({ joinType = string joinOn = list(object({ left = object({ node = string columnName = string }) right = object({ node = string columnName = string }) })) duration = object({ value = number unit = string }) }) }))``` | `[]` | no | -| operators\_manage\_fields | List of ManageFields operators with their field operations and input connections. ManageFields operators modify the schema of streaming data by adding, removing, renaming, or casting fields. Multiple operations can be applied in sequence. ## Properties - `name`: Unique name for the ManageFields operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.columns`: Array of field operations to perform - `type`: Operation type ("Add", "Remove", "Rename", "Cast") - `properties.column`: Source field reference (required for Remove, Rename, Cast) - `node`: Reference node name (optional, null for same stream) - `columnName`: Name of the source field - `properties.targetDataType`: Target data type for Cast operations ("String", "Double", "Long", "Boolean", "DateTime") - `properties.expression`: Expression for Add operations (literal value or formula) - `alias`: New field name (required for Add, Rename, Cast operations) | ```list(object({ name = string inputNodes = list(string) properties = object({ columns = list(object({ type = string properties = optional(object({ column = optional(object({ node = optional(string) columnName = string })) targetDataType = optional(string) expression = optional(string) })) alias = optional(string) })) }) }))``` | `[]` | no | -| operators\_union | List of Union operators with their input connections. Union operators combine multiple streams with matching field schemas into a single output stream. All input streams must have compatible schemas (same field names and types). ## Properties - `name`: Unique name for the Union operator within the EventStream - `inputNodes`: List of two or more source or stream node names to combine - `properties`: Empty object (no additional configuration required) | ```list(object({ name = string inputNodes = list(string) properties = optional(object({}), {}) }))``` | `[]` | no | -| retention\_days | Retention days for the EventStream data storage. This setting controls how long event data is retained in the EventStream before automatic cleanup. Affects both stream buffer and historical data availability for replay scenarios. Valid range: 1-90 days | `number` | `7` | no | -| sources\_custom\_endpoints | List of CustomEndpoint sources with their configuration. Custom Endpoint sources provide an endpoint URL for external applications to send data to the EventStream. The endpoint handles authentication and data ingestion automatically. ## Properties - `name`: Unique name for the source within the EventStream | ```list(object({ name = string properties = optional(object({}), {}) }))``` | `[]` | no | -| streams\_default | DefaultStream required. List of Default Streams one or more sources to one or more destination ## Properties - `name`: Unique name for the DefaultStream - default: es-{var.resource\_prefix}-{var.environment}-{var.instance}-stream - `properties`: Always an empty object - `inputNodes`: List of sources to provide DefaultStream | ```list(object({ name = optional(string, null) properties = optional(object({}), {}) inputNodes = list(string) }))``` | `[]` | no | -| streams\_derived | List of DerivedStream configurations with their input connections. DerivedStreams are processed data streams that result from operator transformations. They can be consumed by destinations or used as inputs to other operators. ## Properties - `name`: Unique name for the derived stream within the EventStream - `inputNodes`: List of operator node names that produce data for this stream - `properties.inputSerialization`: Data serialization configuration - `type`: Serialization format ("Json", "Avro", "Csv") - default: "Json" - `properties.encoding`: Character encoding ("UTF8", "UTF16", "UTF32") - default: "UTF8" | ```list(object({ name = string inputNodes = list(string) properties = optional(object({ inputSerialization = optional(object({ type = optional(string, "Json") properties = optional(object({ encoding = optional(string, "UTF8") }), { encoding = "UTF8" }) }), { type = "Json" properties = { encoding = "UTF8" } }) }), {}) }))``` | `[]` | no | -| template\_tokens | Optional map of template tokens for custom template file substitution. Used when eventstream\_template\_file\_path is provided to replace placeholders in the custom template file. Token keys should match placeholders in the template. Example template placeholders: - `{{.WorkspaceId}}` - Fabric workspace identifier - `{{.DatabaseName}}` - KQL database name - `{{.Content}}` - JSON content (when using auto-generated configuration) When eventstream\_template\_file\_path is null, this map is ignored and auto-generated tokens are used instead. | `map(string)` | `{}` | no | -| throughput\_level | Event throughput level optimization for EventStream performance. Controls the underlying resource allocation and performance characteristics: - "Low": Up to 1 MB/s throughput, suitable for development and low-volume scenarios - "Medium": Up to 5 MB/s throughput, balanced performance for most production workloads - "High": Up to 10 MB/s throughput, maximum performance for high-volume scenarios Higher levels may incur additional costs but provide better performance guarantees. | `string` | `"Medium"` | no | +| Name | Description | Type | Default | Required | +| ---- | ----------- | ---- | ------- | :------: | +| environment | Environment for all resources in this module: dev, test, or prod | `string` | n/a | yes | +| fabric\_workspace | Fabric workspace for RTI resources. Required when fabric\_eventstream\_endpoint is provided. | ```object({ id = string display_name = string })``` | n/a | yes | +| resource\_prefix | Prefix for all resources in this module | `string` | n/a | yes | +| destinations\_eventhouse | List of Eventhouse destinations with their configuration and input connections. Eventhouse destinations route processed data to KQL databases for real-time analytics and querying. When workspaceId, itemId, or databaseName are not provided, the component uses automatically configured references from the fabric\_workspace and fabric\_eventhouse dependencies. ## Properties - `name`: Unique name for the destination within the EventStream - `inputNodes`: List of source or operator node names that feed into this destination - `properties.dataIngestionMode`: Ingestion mode ("DirectIngestion", "ProcessedIngestion") - default: "ProcessedIngestion" - `properties.workspaceId`: Fabric workspace ID - `properties.itemId`: Eventhouse Database ID - `properties.databaseName`: KQL database name - `properties.tableName`: Target KQL table name (optional for direct ingestion, auto-created if not specified) - `properties.inputSerialization`: Data serialization configuration - `type`: Serialization format ("Json", "Avro", "Csv") - default: "Json" - `properties.encoding`: Character encoding ("UTF8", "UTF16", "UTF32") - default: "UTF8" | ```list(object({ name = string inputNodes = list(string) properties = object({ dataIngestionMode = optional(string, "ProcessedIngestion") workspaceId = string itemId = string databaseName = string tableName = optional(string, null) inputSerialization = optional(object({ type = optional(string, "Json") properties = optional(object({ encoding = optional(string, "UTF8") }), { encoding = "UTF8" }) }), { type = "Json" properties = { encoding = "UTF8" } }) }) }))``` | `[]` | no | +| destinations\_lakehouse | List of Lakehouse destinations with their configuration and input connections. Lakehouse destinations route processed data to Delta tables in Fabric Lakehouses for data lake analytics. When workspaceId or itemId are not provided, the component uses automatically configured references. ## Properties - `name`: Unique name for the destination within the EventStream - `inputNodes`: List of source or operator node names that feed into this destination - `properties.workspaceId`: Fabric workspace ID (optional, defaults to component workspace) - `properties.itemId`: Lakehouse item ID (optional, requires explicit configuration) - `properties.schema`: Schema name within the lakehouse (optional) - default: "dbo" - `properties.deltaTable`: Target Delta table name (required) - `properties.minimumRows`: Minimum number of rows to buffer before writing to Delta table - default: 100000 - `properties.maximumDurationInSeconds`: Maximum time in seconds to buffer before forcing write - default: 120 - `properties.inputSerialization`: Data serialization configuration - `type`: Serialization format ("Json", "Avro", "Csv") - default: "Json" - `properties.encoding`: Character encoding ("UTF8", "UTF16", "UTF32") - default: "UTF8" | ```list(object({ name = string inputNodes = list(string) properties = object({ workspaceId = string itemId = string schema = optional(string, "dbo") deltaTable = string minimumRows = optional(number, 100000) maximumDurationInSeconds = optional(number, 120) inputSerialization = optional(object({ type = optional(string, "Json") properties = optional(object({ encoding = optional(string, "UTF8") }), { encoding = "UTF8" }) }), { type = "Json" properties = { encoding = "UTF8" } }) }) }))``` | `[]` | no | +| eventstream\_template\_file\_path | Optional file path to custom eventstream.json template for advanced scenarios. When provided, this template file will be used instead of the auto-generated DAG configuration. The template should be a Go text/template format file that will be processed with the tokens provided in the template\_tokens variable. Use this for: - Complex EventStream configurations not supported by the DAG variables - Custom JSON structures requiring specific formatting - Advanced template-based configuration management If null (default), the component generates the EventStream definition from DAG variables. | `string` | `null` | no | +| instance | Instance identifier for naming resources: 001, 002, etc | `string` | `"001"` | no | +| operators\_aggregate | List of Aggregate operators with their aggregation configuration and input connections. Aggregate operators calculate rolling aggregations over time windows with optional partitioning. Unlike GroupBy, Aggregate operators emit results continuously as events arrive. ## Properties - `name`: Unique name for the Aggregate operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.aggregations`: Array of aggregation functions to apply - `aggregateFunction`: Function to apply ("Count", "Sum", "Average", "Min", "Max", "First", "Last") - `column.node`: Reference node name (optional, null for same stream) - `column.columnName`: Name of the field/column to aggregate ("*" for count operations) - `alias`: Output field name for the aggregation result - `partitionBy`: Array of fields to partition aggregations by (optional) - `node`: Reference node name (optional, null for same stream) - `columnName`: Name of the field/column to partition by - `duration`: Time window for the aggregation - `value`: Duration value (number) - `unit`: Time unit ("Second", "Minute", "Hour", "Day") | ```list(object({ name = string inputNodes = list(string) properties = object({ aggregations = list(object({ aggregateFunction = string column = object({ node = optional(string) columnName = string }) alias = string partitionBy = optional(list(object({ node = optional(string) columnName = string })), []) duration = object({ value = number unit = string }) })) }) }))``` | `[]` | no | +| operators\_expand | List of Expand operators with their expansion configuration and input connections. Expand operators flatten array fields by creating separate output events for each array element. This is useful for processing nested JSON structures with arrays. ## Properties - `name`: Unique name for the Expand operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.column`: Array field to expand - `node`: Reference node name (optional, null for same stream) - `columnName`: Name of the array field to expand - `properties.ignoreMissingOrEmpty`: Whether to ignore missing or empty arrays (default: false) - `true`: Skip events with missing/empty arrays - `false`: Pass through events with missing/empty arrays unchanged | ```list(object({ name = string inputNodes = list(string) properties = object({ column = object({ node = optional(string) columnName = string }) ignoreMissingOrEmpty = optional(bool, false) }) }))``` | `[]` | no | +| operators\_filter | List of Filter operators with their conditions and input connections. Filter operators evaluate conditions on streaming data and only pass events that meet all specified criteria. Multiple conditions are combined with logical AND operations. ## Properties - `name`: Unique name for the filter operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.conditions`: Array of filter conditions to evaluate - `column.node`: Reference node name (optional, null for same stream) - `column.columnName`: Name of the field/column to evaluate - `column.columnPath`: JSONPath for nested fields (optional) - `column.expressionType`: Expression type ("ColumnReference") - default: "ColumnReference" - `operatorType`: Comparison operator ("Equals", "NotEquals", "GreaterThan", "LessThan", "GreaterThanOrEqual", "LessThanOrEqual", "Contains", "StartsWith", "EndsWith") - `value.dataType`: Data type for comparison ("String", "Double", "Long", "Boolean", "DateTime") - default: "String" - `value.value`: The literal value to compare against (as string) - `value.expressionType`: Value expression type ("Literal") - default: "Literal" | ```list(object({ name = string inputNodes = list(string) properties = object({ conditions = list(object({ column = object({ node = optional(string) columnName = string columnPath = optional(string) expressionType = optional(string, "ColumnReference") }) operatorType = string value = object({ dataType = optional(string, "String") value = string expressionType = optional(string, "Literal") }) })) }) }))``` | `[]` | no | +| operators\_group\_by | List of GroupBy operators with their aggregation configuration and input connections. GroupBy operators group events by specified fields and apply aggregation functions within time windows. Results are emitted when the time window completes. ## Properties - `name`: Unique name for the GroupBy operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.aggregations`: Array of aggregation functions to apply - `aggregateFunction`: Function to apply ("Count", "Sum", "Average", "Min", "Max", "First", "Last") - `column.node`: Reference node name (optional, null for same stream) - `column.columnName`: Name of the field/column to aggregate ("*" for count operations) - `alias`: Output field name for the aggregation result - `properties.groupBy`: Array of fields to group by - `node`: Reference node name (optional, null for same stream) - `columnName`: Name of the field/column to group by - `properties.window`: Time window configuration - `type`: Window type ("Tumbling", "Hopping", "Session") - `properties.duration`: Window duration - `value`: Duration value (number) - `unit`: Time unit ("Second", "Minute", "Hour", "Day") - `properties.offset`: Window offset (optional, for Hopping windows) - `value`: Offset value (number) - `unit`: Time unit ("Second", "Minute", "Hour", "Day") | ```list(object({ name = string inputNodes = list(string) properties = object({ aggregations = list(object({ aggregateFunction = string column = object({ node = optional(string) columnName = string }) alias = string })) groupBy = list(object({ node = optional(string) columnName = string })) window = object({ type = string properties = object({ duration = object({ value = number unit = string }) offset = optional(object({ value = number unit = string })) }) }) }) }))``` | `[]` | no | +| operators\_join | List of Join operators with their join configuration and input connections. Join operators combine data from two input streams based on matching key fields within a time window. The operator maintains a buffer of events from both streams for the specified duration. ## Properties - `name`: Unique name for the Join operator within the EventStream - `inputNodes`: List of exactly two source or stream node names (left and right streams) - `properties.joinType`: Type of join operation ("Inner", "LeftOuter") - `properties.joinOn`: Array of join conditions specifying field mappings - `left.node`: Name of the left stream node - `left.columnName`: Field name in the left stream to join on - `right.node`: Name of the right stream node - `right.columnName`: Field name in the right stream to join on - `properties.duration`: Time window for maintaining join state - `value`: Duration value (number) - `unit`: Time unit ("Second", "Minute", "Hour", "Day") | ```list(object({ name = string inputNodes = list(string) properties = object({ joinType = string joinOn = list(object({ left = object({ node = string columnName = string }) right = object({ node = string columnName = string }) })) duration = object({ value = number unit = string }) }) }))``` | `[]` | no | +| operators\_manage\_fields | List of ManageFields operators with their field operations and input connections. ManageFields operators modify the schema of streaming data by adding, removing, renaming, or casting fields. Multiple operations can be applied in sequence. ## Properties - `name`: Unique name for the ManageFields operator within the EventStream - `inputNodes`: List of source or stream node names that feed into this operator - `properties.columns`: Array of field operations to perform - `type`: Operation type ("Add", "Remove", "Rename", "Cast") - `properties.column`: Source field reference (required for Remove, Rename, Cast) - `node`: Reference node name (optional, null for same stream) - `columnName`: Name of the source field - `properties.targetDataType`: Target data type for Cast operations ("String", "Double", "Long", "Boolean", "DateTime") - `properties.expression`: Expression for Add operations (literal value or formula) - `alias`: New field name (required for Add, Rename, Cast operations) | ```list(object({ name = string inputNodes = list(string) properties = object({ columns = list(object({ type = string properties = optional(object({ column = optional(object({ node = optional(string) columnName = string })) targetDataType = optional(string) expression = optional(string) })) alias = optional(string) })) }) }))``` | `[]` | no | +| operators\_union | List of Union operators with their input connections. Union operators combine multiple streams with matching field schemas into a single output stream. All input streams must have compatible schemas (same field names and types). ## Properties - `name`: Unique name for the Union operator within the EventStream - `inputNodes`: List of two or more source or stream node names to combine - `properties`: Empty object (no additional configuration required) | ```list(object({ name = string inputNodes = list(string) properties = optional(object({}), {}) }))``` | `[]` | no | +| retention\_days | Retention days for the EventStream data storage. This setting controls how long event data is retained in the EventStream before automatic cleanup. Affects both stream buffer and historical data availability for replay scenarios. Valid range: 1-90 days | `number` | `7` | no | +| sources\_custom\_endpoints | List of CustomEndpoint sources with their configuration. Custom Endpoint sources provide an endpoint URL for external applications to send data to the EventStream. The endpoint handles authentication and data ingestion automatically. ## Properties - `name`: Unique name for the source within the EventStream | ```list(object({ name = string properties = optional(object({}), {}) }))``` | `[]` | no | +| streams\_default | DefaultStream required. List of Default Streams one or more sources to one or more destination ## Properties - `name`: Unique name for the DefaultStream - default: es-{var.resource\_prefix}-{var.environment}-{var.instance}-stream - `properties`: Always an empty object - `inputNodes`: List of sources to provide DefaultStream | ```list(object({ name = optional(string, null) properties = optional(object({}), {}) inputNodes = list(string) }))``` | `[]` | no | +| streams\_derived | List of DerivedStream configurations with their input connections. DerivedStreams are processed data streams that result from operator transformations. They can be consumed by destinations or used as inputs to other operators. ## Properties - `name`: Unique name for the derived stream within the EventStream - `inputNodes`: List of operator node names that produce data for this stream - `properties.inputSerialization`: Data serialization configuration - `type`: Serialization format ("Json", "Avro", "Csv") - default: "Json" - `properties.encoding`: Character encoding ("UTF8", "UTF16", "UTF32") - default: "UTF8" | ```list(object({ name = string inputNodes = list(string) properties = optional(object({ inputSerialization = optional(object({ type = optional(string, "Json") properties = optional(object({ encoding = optional(string, "UTF8") }), { encoding = "UTF8" }) }), { type = "Json" properties = { encoding = "UTF8" } }) }), {}) }))``` | `[]` | no | +| template\_tokens | Optional map of template tokens for custom template file substitution. Used when eventstream\_template\_file\_path is provided to replace placeholders in the custom template file. Token keys should match placeholders in the template. Example template placeholders: - `{{.WorkspaceId}}` - Fabric workspace identifier - `{{.DatabaseName}}` - KQL database name - `{{.Content}}` - JSON content (when using auto-generated configuration) When eventstream\_template\_file\_path is null, this map is ignored and auto-generated tokens are used instead. | `map(string)` | `{}` | no | +| throughput\_level | Event throughput level optimization for EventStream performance. Controls the underlying resource allocation and performance characteristics: - "Low": Up to 1 MB/s throughput, suitable for development and low-volume scenarios - "Medium": Up to 5 MB/s throughput, balanced performance for most production workloads - "High": Up to 10 MB/s throughput, maximum performance for high-volume scenarios Higher levels may incur additional costs but provide better performance guarantees. | `string` | `"Medium"` | no | ## Outputs -| Name | Description | -|---------------------------------------|---------------------------------------------------------------------| -| custom\_endpoint\_source\_connections | CustomEndpoint connection details. | -| eventstream | The created EventStream resource details. | -| eventstream\_dag\_configuration | The DAG configuration used for EventStream creation. | -| eventstream\_destinations | The EventStream destination nodes with their configuration details. | -| eventstream\_sources | The EventStream source nodes with their configuration details. | -| eventstream\_streams | The EventStream stream nodes with their configuration details. | +| Name | Description | +| ---- | ----------- | +| custom\_endpoint\_source\_connections | CustomEndpoint connection details. | +| eventstream | The created EventStream resource details. | +| eventstream\_dag\_configuration | The DAG configuration used for EventStream creation. | +| eventstream\_destinations | The EventStream destination nodes with their configuration details. | +| eventstream\_sources | The EventStream source nodes with their configuration details. | +| eventstream\_streams | The EventStream stream nodes with their configuration details. |