From e9aa861aa41f956ef72aa4eda0f26b5b618687d4 Mon Sep 17 00:00:00 2001 From: Adam Coulter Date: Tue, 12 Jan 2021 13:28:57 +1100 Subject: [PATCH 1/6] added numberOfWorkers property to app_service --- azurerm/internal/services/web/app_service.go | 19 +++++++ .../services/web/app_service_resource_test.go | 53 +++++++++++++++++++ website/docs/d/app_service.html.markdown | 2 + website/docs/r/app_service.html.markdown | 2 + 4 files changed, 76 insertions(+) diff --git a/azurerm/internal/services/web/app_service.go b/azurerm/internal/services/web/app_service.go index 49adcbc19203..5a7a89339a1f 100644 --- a/azurerm/internal/services/web/app_service.go +++ b/azurerm/internal/services/web/app_service.go @@ -455,6 +455,12 @@ func schemaAppServiceSiteConfig() *schema.Schema { Optional: true, }, + "number_of_workers": { + Type: schema.TypeInt, + Optional: true, + ValidateFunc: validation.IntBetween(1, 100), + }, + "linux_fx_version": { Type: schema.TypeString, Optional: true, @@ -774,6 +780,11 @@ func schemaAppServiceDataSourceSiteConfig() *schema.Schema { Computed: true, }, + "number_of_workers": { + Type: schema.TypeInt, + Computed: true, + }, + "linux_fx_version": { Type: schema.TypeString, Computed: true, @@ -1637,6 +1648,10 @@ func expandAppServiceSiteConfig(input interface{}) (*web.SiteConfig, error) { siteConfig.HealthCheckPath = utils.String(v.(string)) } + if v, ok := config["number_of_workers"]; ok { + siteConfig.NumberOfWorkers = utils.Int32(int32(v.(int))) + } + if v, ok := config["min_tls_version"]; ok { siteConfig.MinTLSVersion = web.SupportedTLSVersions(v.(string)) } @@ -1750,6 +1765,10 @@ func flattenAppServiceSiteConfig(input *web.SiteConfig) []interface{} { result["health_check_path"] = *input.HealthCheckPath } + if input.NumberOfWorkers != nil { + result["number_of_workers"] = *input.NumberOfWorkers + } + result["min_tls_version"] = string(input.MinTLSVersion) result["cors"] = FlattenWebCorsSettings(input.Cors) diff --git a/azurerm/internal/services/web/app_service_resource_test.go b/azurerm/internal/services/web/app_service_resource_test.go index 9b5838bcf466..c8bc3981a89e 100644 --- a/azurerm/internal/services/web/app_service_resource_test.go +++ b/azurerm/internal/services/web/app_service_resource_test.go @@ -1368,6 +1368,22 @@ func TestAccAppService_healthCheckPath(t *testing.T) { }) } +func TestAccAppService_numberOfWorkers(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_app_service", "test") + r := AppServiceResource{} + + data.ResourceTest(t, r, []resource.TestStep{ + { + Config: r.numberOfWorkers(data), + Check: resource.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + check.That(data.ResourceName).Key("site_config.0.number_of_workers").HasValue("1"), + ), + }, + data.ImportStep(), + }) +} + // Note: to specify `linux_fx_version` the App Service Plan must be of `kind = "Linux"`, and `reserved = true` func TestAccAppService_linuxFxVersion(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_app_service", "test") @@ -4074,6 +4090,43 @@ resource "azurerm_app_service" "test" { `, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) } +func (r AppServiceResource) numberOfWorkers(data acceptance.TestData) string { + return fmt.Sprintf(` +provider "azurerm" { + features {} +} + +resource "azurerm_resource_group" "test" { + name = "acctestRG-%d" + location = "%s" +} + +resource "azurerm_app_service_plan" "test" { + name = "acctestASP-%d" + location = azurerm_resource_group.test.location + resource_group_name = azurerm_resource_group.test.name + per_site_scaling = true + + + sku { + tier = "Standard" + size = "S1" + } +} + +resource "azurerm_app_service" "test" { + name = "acctestAS-%d" + location = azurerm_resource_group.test.location + resource_group_name = azurerm_resource_group.test.name + app_service_plan_id = azurerm_app_service_plan.test.id + + site_config { + number_of_workers = 1 + } +} +`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) +} + func (r AppServiceResource) linuxFxVersion(data acceptance.TestData) string { return fmt.Sprintf(` provider "azurerm" { diff --git a/website/docs/d/app_service.html.markdown b/website/docs/d/app_service.html.markdown index 4e0ccb090fa2..bd967e519cf1 100644 --- a/website/docs/d/app_service.html.markdown +++ b/website/docs/d/app_service.html.markdown @@ -136,6 +136,8 @@ A `site_config` block exports the following: * `health_check_path` - The health check path to be pinged by App Service. +* `number_of_workers` - The scaled number of workers (for per site scaling) of this App Service. + * `ip_restriction` - One or more `ip_restriction` blocks as defined above. * `scm_use_main_ip_restriction` - IP security restrictions for scm to use main. diff --git a/website/docs/r/app_service.html.markdown b/website/docs/r/app_service.html.markdown index f0445778e515..6718aaea7f7a 100644 --- a/website/docs/r/app_service.html.markdown +++ b/website/docs/r/app_service.html.markdown @@ -195,6 +195,8 @@ A `site_config` block supports the following: * `health_check_path` - (Optional) The health check path to be pinged by App Service. [For more information - please see the corresponding Kudu Wiki page](https://github.com/projectkudu/kudu/wiki/Health-Check-(Preview)). +* `number_of_workers` - (Optional) The scaled number of workers (for per site scaling) of this App Service. Requires that `per_site_scaling` is enabled on the `azurerm_app_service_plan`. [For more information - please see Microsoft Documentation on High-density hosting](https://docs.microsoft.com/en-us/azure/app-service/manage-scale-per-app). + ~> **Note:** This functionality is in Preview and is subject to changes (including breaking changes) on Azure's end * `http2_enabled` - (Optional) Is HTTP2 Enabled on this App Service? Defaults to `false`. From e837729d88e5cb05d5e6fa43ba040d378311f538 Mon Sep 17 00:00:00 2001 From: Adam Coulter Date: Tue, 12 Jan 2021 13:30:22 +1100 Subject: [PATCH 2/6] fixed line spacing --- azurerm/internal/services/web/app_service_resource_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/azurerm/internal/services/web/app_service_resource_test.go b/azurerm/internal/services/web/app_service_resource_test.go index c8bc3981a89e..c0c6e265b2a7 100644 --- a/azurerm/internal/services/web/app_service_resource_test.go +++ b/azurerm/internal/services/web/app_service_resource_test.go @@ -4107,7 +4107,6 @@ resource "azurerm_app_service_plan" "test" { resource_group_name = azurerm_resource_group.test.name per_site_scaling = true - sku { tier = "Standard" size = "S1" From 6f453d2dba7815a54bc1d27770010e50bc0a20e6 Mon Sep 17 00:00:00 2001 From: Adam Coulter Date: Tue, 12 Jan 2021 13:31:43 +1100 Subject: [PATCH 3/6] fixed capitalisation --- website/docs/r/app_service.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/r/app_service.html.markdown b/website/docs/r/app_service.html.markdown index 6718aaea7f7a..200a1c86bf6f 100644 --- a/website/docs/r/app_service.html.markdown +++ b/website/docs/r/app_service.html.markdown @@ -195,7 +195,7 @@ A `site_config` block supports the following: * `health_check_path` - (Optional) The health check path to be pinged by App Service. [For more information - please see the corresponding Kudu Wiki page](https://github.com/projectkudu/kudu/wiki/Health-Check-(Preview)). -* `number_of_workers` - (Optional) The scaled number of workers (for per site scaling) of this App Service. Requires that `per_site_scaling` is enabled on the `azurerm_app_service_plan`. [For more information - please see Microsoft Documentation on High-density hosting](https://docs.microsoft.com/en-us/azure/app-service/manage-scale-per-app). +* `number_of_workers` - (Optional) The scaled number of workers (for per site scaling) of this App Service. Requires that `per_site_scaling` is enabled on the `azurerm_app_service_plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/en-us/azure/app-service/manage-scale-per-app). ~> **Note:** This functionality is in Preview and is subject to changes (including breaking changes) on Azure's end From 4e5c244c09f403eef8cd554360cd791372af087d Mon Sep 17 00:00:00 2001 From: Adam Coulter Date: Tue, 12 Jan 2021 13:40:35 +1100 Subject: [PATCH 4/6] updated health_check_path doco now in ga --- website/docs/r/app_service.html.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/website/docs/r/app_service.html.markdown b/website/docs/r/app_service.html.markdown index 200a1c86bf6f..d6448168680c 100644 --- a/website/docs/r/app_service.html.markdown +++ b/website/docs/r/app_service.html.markdown @@ -193,12 +193,10 @@ A `site_config` block supports the following: * `ftps_state` - (Optional) State of FTP / FTPS service for this App Service. Possible values include: `AllAllowed`, `FtpsOnly` and `Disabled`. -* `health_check_path` - (Optional) The health check path to be pinged by App Service. [For more information - please see the corresponding Kudu Wiki page](https://github.com/projectkudu/kudu/wiki/Health-Check-(Preview)). +* `health_check_path` - (Optional) The health check path to be pinged by App Service. [For more information - please see App Service health check announcement](https://azure.github.io/AppService/2020/08/24/healthcheck-on-app-service.html). * `number_of_workers` - (Optional) The scaled number of workers (for per site scaling) of this App Service. Requires that `per_site_scaling` is enabled on the `azurerm_app_service_plan`. [For more information - please see Microsoft documentation on high-density hosting](https://docs.microsoft.com/en-us/azure/app-service/manage-scale-per-app). -~> **Note:** This functionality is in Preview and is subject to changes (including breaking changes) on Azure's end - * `http2_enabled` - (Optional) Is HTTP2 Enabled on this App Service? Defaults to `false`. * `ip_restriction` - (Optional) A [List of objects](/docs/configuration/attr-as-blocks.html) representing ip restrictions as defined below. From c4012d665d8d6f708d99ec085cf60220a1eef6d5 Mon Sep 17 00:00:00 2001 From: Adam Coulter Date: Thu, 14 Jan 2021 22:27:24 +1100 Subject: [PATCH 5/6] Remove invalid default of 0 Co-authored-by: Steve <11830746+jackofallops@users.noreply.github.com> --- azurerm/internal/services/web/app_service.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azurerm/internal/services/web/app_service.go b/azurerm/internal/services/web/app_service.go index 5a7a89339a1f..636b972db676 100644 --- a/azurerm/internal/services/web/app_service.go +++ b/azurerm/internal/services/web/app_service.go @@ -1648,7 +1648,7 @@ func expandAppServiceSiteConfig(input interface{}) (*web.SiteConfig, error) { siteConfig.HealthCheckPath = utils.String(v.(string)) } - if v, ok := config["number_of_workers"]; ok { + if v, ok := config["number_of_workers"]; ok && v.(int) != 0 { siteConfig.NumberOfWorkers = utils.Int32(int32(v.(int))) } From 1ad6adb5bb5229909c44d7cdadc8a69cdc57a38d Mon Sep 17 00:00:00 2001 From: Adam Coulter Date: Fri, 15 Jan 2021 00:34:43 +1100 Subject: [PATCH 6/6] fix reapply loop --- azurerm/internal/services/web/app_service.go | 1 + 1 file changed, 1 insertion(+) diff --git a/azurerm/internal/services/web/app_service.go b/azurerm/internal/services/web/app_service.go index 636b972db676..12db748ddb4a 100644 --- a/azurerm/internal/services/web/app_service.go +++ b/azurerm/internal/services/web/app_service.go @@ -459,6 +459,7 @@ func schemaAppServiceSiteConfig() *schema.Schema { Type: schema.TypeInt, Optional: true, ValidateFunc: validation.IntBetween(1, 100), + Computed: true, }, "linux_fx_version": {