diff --git a/internal/services/streamanalytics/stream_analytics_output_eventhub_resource.go b/internal/services/streamanalytics/stream_analytics_output_eventhub_resource.go index 2234066d28b0..92b7ca90fc24 100644 --- a/internal/services/streamanalytics/stream_analytics_output_eventhub_resource.go +++ b/internal/services/streamanalytics/stream_analytics_output_eventhub_resource.go @@ -86,6 +86,11 @@ func resourceStreamAnalyticsOutputEventHub() *pluginsdk.Resource { }, }, + "partition_key": { + Type: pluginsdk.TypeString, + Optional: true, + }, + "serialization": schemaStreamAnalyticsOutputSerialization(), }, } @@ -119,6 +124,7 @@ func resourceStreamAnalyticsOutputEventHubCreateUpdate(d *pluginsdk.ResourceData sharedAccessPolicyKey := d.Get("shared_access_policy_key").(string) sharedAccessPolicyName := d.Get("shared_access_policy_name").(string) propertyColumns := d.Get("property_columns").([]interface{}) + partitionKey := d.Get("partition_key").(string) serializationRaw := d.Get("serialization").([]interface{}) serialization, err := expandStreamAnalyticsOutputSerialization(serializationRaw) @@ -137,6 +143,7 @@ func resourceStreamAnalyticsOutputEventHubCreateUpdate(d *pluginsdk.ResourceData SharedAccessPolicyKey: utils.String(sharedAccessPolicyKey), SharedAccessPolicyName: utils.String(sharedAccessPolicyName), PropertyColumns: utils.ExpandStringSlice(propertyColumns), + PartitionKey: utils.String(partitionKey), }, }, Serialization: serialization, @@ -199,6 +206,7 @@ func resourceStreamAnalyticsOutputEventHubRead(d *pluginsdk.ResourceData, meta i d.Set("servicebus_namespace", v.ServiceBusNamespace) d.Set("shared_access_policy_name", v.SharedAccessPolicyName) d.Set("property_columns", v.PropertyColumns) + d.Set("partition_key", v.PartitionKey) if err := d.Set("serialization", flattenStreamAnalyticsOutputSerialization(props.Serialization)); err != nil { return fmt.Errorf("setting `serialization`: %+v", err) diff --git a/internal/services/streamanalytics/stream_analytics_output_eventhub_resource_test.go b/internal/services/streamanalytics/stream_analytics_output_eventhub_resource_test.go index ea741a3bc607..d7130f2f8dd2 100644 --- a/internal/services/streamanalytics/stream_analytics_output_eventhub_resource_test.go +++ b/internal/services/streamanalytics/stream_analytics_output_eventhub_resource_test.go @@ -99,6 +99,22 @@ func TestAccStreamAnalyticsOutputEventHub_propertyColumns(t *testing.T) { }) } +func TestAccStreamAnalyticsOutputEventHub_partitionKey(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_stream_analytics_output_eventhub", "test") + r := StreamAnalyticsOutputEventhubResource{} + + data.ResourceTest(t, r, []acceptance.TestStep{ + { + Config: r.partitionKey(data), + Check: acceptance.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + check.That(data.ResourceName).Key("partition_key").HasValue("partitionKey"), + ), + }, + data.ImportStep("shared_access_policy_key"), + }) +} + func TestAccStreamAnalyticsOutputEventHub_update(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_stream_analytics_output_eventhub", "test") r := StreamAnalyticsOutputEventhubResource{} @@ -219,6 +235,30 @@ resource "azurerm_stream_analytics_output_eventhub" "test" { `, template, data.RandomInteger) } +func (r StreamAnalyticsOutputEventhubResource) partitionKey(data acceptance.TestData) string { + template := r.template(data) + return fmt.Sprintf(` +%s + +resource "azurerm_stream_analytics_output_eventhub" "test" { + name = "acctestinput-%d" + stream_analytics_job_name = azurerm_stream_analytics_job.test.name + resource_group_name = azurerm_stream_analytics_job.test.resource_group_name + eventhub_name = azurerm_eventhub.test.name + servicebus_namespace = azurerm_eventhub_namespace.test.name + shared_access_policy_key = azurerm_eventhub_namespace.test.default_primary_key + shared_access_policy_name = "RootManageSharedAccessKey" + partition_key = "partitionKey" + + serialization { + type = "Csv" + encoding = "UTF8" + field_delimiter = "," + } +} +`, template, data.RandomInteger) +} + func (r StreamAnalyticsOutputEventhubResource) json(data acceptance.TestData) string { template := r.template(data) return fmt.Sprintf(` diff --git a/website/docs/r/stream_analytics_output_eventhub.html.markdown b/website/docs/r/stream_analytics_output_eventhub.html.markdown index 9cb9aa89c4dd..9e6fdec0d84c 100644 --- a/website/docs/r/stream_analytics_output_eventhub.html.markdown +++ b/website/docs/r/stream_analytics_output_eventhub.html.markdown @@ -75,6 +75,8 @@ The following arguments are supported: * `property_columns` - (Optional) A list of property columns to add to the Event Hub output. +* `partition_key` - (Optional) The column that is used for the Event Hub partition key. + --- A `serialization` block supports the following: