Skip to content

Commit

Permalink
azurerm_kusto_cluster - supoport for zones (hashicorp#7373)
Browse files Browse the repository at this point in the history
Enables to define availability zones for a Kusto Cluster.
  • Loading branch information
jrauschenbusch committed Jun 25, 2020
1 parent 4adf17a commit b7791d2
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 0 deletions.
9 changes: 9 additions & 0 deletions azurerm/internal/services/kusto/kusto_cluster_resource.go
Expand Up @@ -145,6 +145,8 @@ func resourceArmKustoCluster() *schema.Resource {
Computed: true,
},

"zones": azure.SchemaZones(),

"tags": tags.Schema(),
},
}
Expand Down Expand Up @@ -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)),
Expand All @@ -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),
}
Expand Down Expand Up @@ -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)
Expand Down
Expand Up @@ -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")

Expand Down Expand Up @@ -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" {
Expand Down
2 changes: 2 additions & 0 deletions website/docs/r/kusto_cluster.html.markdown
Expand Up @@ -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:
Expand Down

0 comments on commit b7791d2

Please sign in to comment.