From b7791d2b589bfa009de25219e8d8559e2f163537 Mon Sep 17 00:00:00 2001 From: Jochen Rauschenbusch Date: Wed, 24 Jun 2020 06:00:25 +0200 Subject: [PATCH] azurerm_kusto_cluster - supoport for zones (#7373) Enables to define availability zones for a Kusto Cluster. --- .../services/kusto/kusto_cluster_resource.go | 9 ++++ .../tests/kusto_cluster_resource_test.go | 46 +++++++++++++++++++ website/docs/r/kusto_cluster.html.markdown | 2 + 3 files changed, 57 insertions(+) diff --git a/azurerm/internal/services/kusto/kusto_cluster_resource.go b/azurerm/internal/services/kusto/kusto_cluster_resource.go index ebeee85f4f8ab..beeaac70010ec 100644 --- a/azurerm/internal/services/kusto/kusto_cluster_resource.go +++ b/azurerm/internal/services/kusto/kusto_cluster_resource.go @@ -145,6 +145,8 @@ func resourceArmKustoCluster() *schema.Resource { Computed: true, }, + "zones": azure.SchemaZones(), + "tags": tags.Schema(), }, } @@ -180,6 +182,8 @@ func resourceArmKustoClusterCreateUpdate(d *schema.ResourceData, meta interface{ return err } + zones := azure.ExpandZones(d.Get("zones").([]interface{})) + clusterProperties := kusto.ClusterProperties{ EnableDiskEncryption: utils.Bool(d.Get("enable_disk_encryption").(bool)), EnableStreamingIngest: utils.Bool(d.Get("enable_streaming_ingest").(bool)), @@ -197,6 +201,7 @@ func resourceArmKustoClusterCreateUpdate(d *schema.ResourceData, meta interface{ Name: &name, Location: &location, Sku: sku, + Zones: zones, ClusterProperties: &clusterProperties, Tags: tags.Expand(t), } @@ -265,6 +270,10 @@ func resourceArmKustoClusterRead(d *schema.ResourceData, meta interface{}) error return fmt.Errorf("Error setting `sku`: %+v", err) } + if err := d.Set("zones", azure.FlattenZones(clusterResponse.Zones)); err != nil { + return fmt.Errorf("Error setting `zones`: %+v", err) + } + if clusterProperties := clusterResponse.ClusterProperties; clusterProperties != nil { d.Set("enable_disk_encryption", clusterProperties.EnableDiskEncryption) d.Set("enable_streaming_ingest", clusterProperties.EnableStreamingIngest) diff --git a/azurerm/internal/services/kusto/tests/kusto_cluster_resource_test.go b/azurerm/internal/services/kusto/tests/kusto_cluster_resource_test.go index 5413375cf756e..d00e29eb28113 100644 --- a/azurerm/internal/services/kusto/tests/kusto_cluster_resource_test.go +++ b/azurerm/internal/services/kusto/tests/kusto_cluster_resource_test.go @@ -130,6 +130,26 @@ func TestAccAzureRMKustoCluster_sku(t *testing.T) { }) } +func TestAccAzureRMKustoCluster_zones(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_kusto_cluster", "test") + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acceptance.PreCheck(t) }, + Providers: acceptance.SupportedProviders, + CheckDestroy: testCheckAzureRMKustoClusterDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAzureRMKustoCluster_withZones(data), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMKustoClusterExists(data.ResourceName), + resource.TestCheckResourceAttr(data.ResourceName, "zones.#", "1"), + resource.TestCheckResourceAttr(data.ResourceName, "zones.0", "1"), + ), + }, + }, + }) +} + func TestAccAzureRMKustoCluster_identitySystemAssigned(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_kusto_cluster", "test") @@ -280,6 +300,32 @@ resource "azurerm_kusto_cluster" "test" { `, data.RandomInteger, data.Locations.Primary, data.RandomString) } +func testAccAzureRMKustoCluster_withZones(data acceptance.TestData) string { + return fmt.Sprintf(` +provider "azurerm" { + features {} +} + +resource "azurerm_resource_group" "test" { + name = "acctestRG-%d" + location = "%s" +} + +resource "azurerm_kusto_cluster" "test" { + name = "acctestkc%s" + location = azurerm_resource_group.test.location + resource_group_name = azurerm_resource_group.test.name + + sku { + name = "Dev(No SLA)_Standard_D11_v2" + capacity = 1 + } + + zones = ["1"] +} +`, data.RandomInteger, data.Locations.Primary, data.RandomString) +} + func testAccAzureRMKustoCluster_update(data acceptance.TestData) string { return fmt.Sprintf(` provider "azurerm" { diff --git a/website/docs/r/kusto_cluster.html.markdown b/website/docs/r/kusto_cluster.html.markdown index ca9dd527db0ab..2ac81770333c4 100644 --- a/website/docs/r/kusto_cluster.html.markdown +++ b/website/docs/r/kusto_cluster.html.markdown @@ -58,6 +58,8 @@ The following arguments are supported: * `tags` - (Optional) A mapping of tags to assign to the resource. +* `zones` - (Optional) A list of Availability Zones in which the cluster instances should be created in. Changing this forces a new resource to be created. + --- A `sku` block supports the following: